PS/프로그래머스
[프로그래머스 LV 1 ] 키패드 누르기 (파이썬/python)
BLUE_ERASER
2021. 6. 22. 00:30
728x90
https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
프로그래머스에 직접 코드 쓰는걸 적응하기 위해 풀어본 심심풀이문제
그냥 딕셔너리에 좌표넣고 거리 계산해가면서 풀었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
def solution(numbers, hand):
answer = ''
dic = {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], 0: [3, 1]}
left = [3, 0]
right = [3, 2]
for n in numbers:
if n == 1 or n == 4 or n == 7:
answer += "L"
left = dic[n]
elif n == 3 or n == 6 or n == 9:
answer += "R"
right = dic[n]
# 2,5,8,0일때
else:
x, y = dic[n]
right_distance = abs(right[0] - x) + abs(right[1] - y)
left_distance = abs(left[0] - x) + abs(left[1] - y)
if left_distance == right_distance:
if hand == "right":
answer += "R"
right = dic[n]
else:
answer += "L"
left = dic[n]
# 서로 위치가 다를경우
else:
if right_distance > left_distance:
answer += "L"
left = dic[n]
else:
answer += "R"
right = dic[n]
return answer
|
cs |
728x90