diff --git a/_posts/2024-01-14-level1-53.md b/_posts/2024-01-14-level1-53.md new file mode 100644 index 000000000000..02e6641d6f40 --- /dev/null +++ b/_posts/2024-01-14-level1-53.md @@ -0,0 +1,68 @@ +--- +layout: single +title: "프로그래머스 LV1 - 키패드 누르기" +categories: CodingTest +tag: [LV1, 프로그래머스, 코딩테스트, ONE MORE TIME] +author_profile: false +sidebar: + nav: "counts" +--- + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/67256) + +## 내 풀이 + +```python +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 [파이썬은 신이야🔥🔥🔥:티스토리] +