## 🔒 문제. [카카오 인턴] 키패드 누르기
def solution(numbers, hand):
answer = ''
keypad = {1:(-1, 3), 2:(0, 3), 3:(1, 3)
, 4:(-1, 2), 5:(0, 2), 6:(1, 2)
, 7:(-1, 1), 8:(0, 1), 9:(1, 1)
, 0:(0, 0)}
l_hand_pos = (-1, 0)
r_hand_pos = (1, 0)
fin_thm = str()
for n in numbers:
if n in [1, 4, 7]:
l_hand_pos = keypad[n]
fin_thm += 'L'
elif n in [3, 6, 9]:
r_hand_pos = keypad[n]
fin_thm += 'R'
elif n in [2, 5, 8, 0]:
## 오른손과 왼손 중 어느 손이 가까운지 비교
#### 맨허튼 거리 계산 (격자)
l_hand_distance = abs( l_hand_pos[0] - keypad[n][0] ) + abs( l_hand_pos[1] - keypad[n][1] )
r_hand_distance = abs( r_hand_pos[0] - keypad[n][0] ) + abs( r_hand_pos[1] - keypad[n][1] )
if l_hand_distance < r_hand_distance:
l_hand_pos = keypad[n]
fin_thm += 'L'
elif l_hand_distance > r_hand_distance:
r_hand_pos = keypad[n]
fin_thm += 'R'
else:
if hand == 'left':
l_hand_pos = keypad[n]
fin_thm += 'L'
else:
r_hand_pos = keypad[n]
fin_thm += 'R'
answer = fin_thm
return answer
## print(solution([1, 2, 2], "right"))
## print(solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right"))
## print(solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left"))
## print(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right"))
Python/코테 연습