Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create 2024-01-14-level1-53.md #86

Merged
merged 1 commit into from
Jan 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions _posts/2024-01-14-level1-53.md
Original file line number Diff line number Diff line change
@@ -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 [파이썬은 신이야🔥🔥🔥:티스토리]

Loading