프로그래머스 LV1 - 키패드 누르기
내 풀이
def solution(numbers, hand):
result = ''
L_used = ['*']
R_used = ['#']
pad = {0: (3,1), 1:(0,0), 2:(0,1), 3:(0,2), 4:(1,0), 5:(1,1), 6:(1,2), 7:(2,0), 8:(2,1), 9: (2,2), '*': (3,0), '#': (3,2)}
for number in numbers:
if number in [1,4,7]:
result += 'L'
L_used.append(number)
elif number in [3,6,9]:
result += 'R'
R_used.append(number)
else:
a, b = pad[number]
c, d = pad[L_used[-1]]
e, f = pad[R_used[-1]]
L_d = abs(a-c)+ abs(b-d)
R_d = abs(a-e)+ abs(b-f)
if L_d > R_d:
result += 'R'
R_used.append(number)
elif L_d < R_d:
result += 'L'
L_used.append(number)
else:
if hand == 'right':
result += 'R'
R_used.append(number)
else:
result += 'L'
L_used.append(number)
return result
맨해튼 거리방식/ 유클리드 거리 방식
맨해튼 거리 방식 / 유클리드 거리 방식 맨해튼 거리와 유클리드 거리는 두 점 사이의 거리를 측정하는 두 가지 다른 방법입니다. 이 두 거리 측정 방법은 대개 좌표 평면이나 다차원 공간에서 사용됩니다. 각각의 거리 측정 방법은 다음과 같이 정의됩니다. 맨해튼 거리 (Manhattan Distance): 맨해튼 거리는 두 점 사이의 거리를 가로 방향과 세로 방향으로 이동하는데필요한 “도로” 또는 “경로”의 길이로 정의됩니다.맨해튼 거리는 대각선 이동을 허용하지 않으며 오로지 수평과 수직 이동만 고려합니다.두 점 (x1, y1)과 (x2, y2) 간의 맨해튼 거리는 다음과 같이 계산됩니다:맨해튼 거리 = |x1 - x2| + |y1 - y2|
유클리드 거리 (Euclidean Distance): 유클리드 거리는 두 점 사이의 직선거리로 정의됩니다.이 거리는 좌표 평면 상에서 두 점을 연결하는 가장 짧은 직선거리입니다.두 점 (x1, y1)과 (x2, y2) 간의 유클리드 거리는 다음과 같이 계산됩니다:유클리드 거리 = √((x1 - x2)² + (y1 - y2)²)
맨해튼 거리는 주로 도시 블록 상에서의 이동 거리를 측정하는 데 사용되며,유클리드 거리는 공간 상에서의 물리적 거리를 측정하는 데 사용됩니다.두 거리 측정 방법은 서로 다른 응용 분야에서 유용하게 활용됩니다.
출처: https://1ets-just-do-it.tistory.com/88 [파이썬은 신이야🔥🔥🔥:티스토리]
댓글남기기