지도에서 직선 거리구하기
자 강남역 9번 출구에서 CU로 가려고 합니다. 여기서 우리는 9번 출구에서 CU까지 직선 거리가 얼마인지 궁금할 때가 있을겁니다.
네이버 지도에서는 그냥 대각선으로 쭉 그어서 거리 구할 수 있기는 하지만 우리는 파이썬으로 이걸 구해봅시다
우선 우리에게 주어진 정보는 두가지라고 가정하겠습니다.
삼각형의 밑변
삼각형의 높이가 주어졌습니다.
피타고라스 정리를 활용하면 이 문제를 풀 수 있습니다.
우리는 a와 b의 길이를 알면 c를 알수 있다! 라는 지식을 가지고 있습니다.
왜 그렇냐구요?
a의 길이를 한변으로 하는 정사각형의 넓이와, b의 길이를 한 변으로 하는 정사각형의 넓이를 구해보니 c를 한변으로 하는 정사각형의 넓이와 같더라!
라는걸 옛날에 수학자들이 밝혀냈습니다.
정사각형의 넓이를 구하려면 변의 길이를 알아야 하는데 이미 a와 b의 길이는 알고 있으니 당연히 정사각형의 넓이도 구할 수 있습니다.
이제 c를 구하려면 제곱근이라는게 필요합니다.
왜 제곱근이 필요하냐구요?
a를 한변으로 하는 정사각형, b를 한변으로 하는 정사각형은 각변의 제곱으로 넓이를 구할 수 있습니다.
가로 * 세로 이게 사각형 넓이 구하는 공식인데 가로세로가 똑같으니 그냥 제곱으로 합니다.
따라서 a² + b²= c² 이라는 결론을 얻을 수 있습니다!
근데 우린 c를 알고싶은거지 c²을 알고싶진 않습니다.
자연수 z가 어떤수를 제곱해야 나오는지 알고 싶기 때문에 우리는 제곱근이 필요합니다.
우선 지금까지 얻은 정보를 수식으로 나타내보겠습니다.
c = √(a² + b²)
이런 수식이 나옵니다.
파이썬에서는 math.sqrt 함수로 제곱근을 구할 수 있습니다.
import math
a = 92.6
b = 157.8
math.sqrt(a*a + b*b)
// 대각선 182.96338431500442
대각선 결과는 약 182 라고 합니다
변수
프로그래밍에서 변수는 변할 수 있는 값 이라는 의미를 갖습니다. 위에 직선 구하는 코드에서 a = 92.6 이라는 구문이 보일겁니다.
변수는 어떠한 값을 저장할 수 있는 하나의 바구니 입니다. 변수를 사용하지 않는다면 우리는 머릿속에서 92.6이 무슨 값인지 계속 생각하고 있어야 할겁니다. 그리고 이 값을 사용할 때에도 92.6이라는 값을 직접 써야할겁니다.
아래 예시를 보겠습니다
첫번째 예시는 변수를 사용한 예시 입니다.
first와 second 변수에 값을 저장하고 이 변수를 통해 덧셈 연산을 하고 있습니다.
firstLine = 3
secondLine = 5
result = firstLine + secondLine
print(result)
두번째 예시는 변수를 사용하지 않은 예시 입니다.
그냥 자연수를 덧셈연산해서 출력하고 있습니다.
print(3 + 5)
자 코드를 작성한 나는이 값들이 무엇을 의미하는지 잘 알고 있을겁니다. 근데 누군가와 함께 이 코드를 봐야한다면 일일히 이 숫자가 무엇을 의미하는지 설명해주어야 할겁니다. 너무 비효율적이고 말도안되는 일입니다. 그리고 이런식으로 변수를 사용하지 않으면 사용한 값을 재사용할 수가 없습니다.
List ( 리스트 )
당근에서 누군가 노트북을 무료나눔 한다고 합니다. 바로 달려가야겠죠? 물론 여러분은 사기꾼인지 확인해보고 달려가시길 바랍니다 ㅋ.ㅋ
자 여기서 무료나눔 하는 사람 입장에서 생각 해봅시다. 노트북을 받으러 온다고 하는 사람이 너무나 많습니다. 이걸 우리는 파이썬으로 관리해보려고 합니다.
people = ['일론머스크','제프 베이조스','마크 저커버그']
결국 총 세명이 오기로 했습니다. 무언가 연속적으로 그리고 연관이 있는 데이터를 하나로 묶어서 표현하기 위해 우리는 list를 사용한겁니다.
remove()
근데 갑자기 일론머스크씨가 일이 생겨서 못오겠답니다. 리스트에서 삭제 해야겠죠?
...생략
people.remove('일론머스크')
remove 키워드로 일론머스크씨를 리스트에서 삭제 했습니다.
len
자 이제 몇명이 남았는지 체크 해봐야겠습니다. len 키워드를 통해 총 몇명이 오기로 했는지 이제 확인도 했습니다.
...생략
len(people)
// 2
이제 노트북을 정말로 나눠줘야겠습니다. 앗 그런데 누군가 또 온다고 메시지가 왔습니다.
append
일론머스크씨가 마음을 바꿔서 다시 온다고 하네요. append키워드를 통해 다시 리스트에 추가 해줍시다.
...생략
people.append('일론머스크')
최종적으로는 아래와 같은 상태가 되었습니다.
people = ['제프 베이조스','마크 저커버그','일론머스크']
근데 일론머스크씨가 불만을 표합니다. 솔직히 제일 먼저 오기로 했었는데 취소했다고 다시 맨뒤로 가는게 억울하다며 다시 맨 첫번째 순서로 바꿔달랍니다.
insert
remove로 우선 일론머스크씨를 리스트에서 다시 지워줍시다. 이후 insert 키워드를 통해 리스트의 특정 위치에 추가해줍니다. 리스트에서는 맨첫번째 위치가 인덱스 0 부터 시작합니다. 현실에서는 맨 앞에 서있으면 1번째 라고 하는데 컴퓨터 세상에선 0부터 표현합니다.
people = ['제프 베이조스','마크 저커버그','일론머스크']
people.remove('일론머스크')
// people = ['제프 베이조스','마크 저커버그'] 현재 이상태
people.insert(0,'일론머스크') // 0번째 인덱스에 추가
// people = ['일론머스크','제프 베이조스','마크 저커버그'] 최종 상태
자 이제 일론머스크씨의 불만이 사라졌습니다. 별다른 문제 없으면 일론머스크씨가 노트북을 받아가겠네요!