https://programmers.co.kr/learn/courses/30/lessons/67256
def solution(numbers, hand):
keypad = {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)
answer = ''
for number in numbers:
if number in [1, 4, 7]:
answer += "L"
left = keypad[number]
elif number in [3, 6, 9]:
answer += "R"
right = keypad[number]
else:
x, y = keypad[number]
left_dist = abs(left[0]-x) + abs(left[1]-y)
right_dist = abs(right[0]-x) + abs(right[1]-y)
if left_dist == right_dist:
if hand == "left":
answer += "L"
left = keypad[number]
else:
answer += "R"
right = keypad[number]
if left_dist > right_dist:
answer += "R"
right = keypad[number]
elif left_dist < right_dist:
answer += "L"
left = keypad[number]
return answer
문제의 요구사항을 따라 착실하게 구현하면 되는 문제였다!
처음 시도에서는 키패드를 누른 뒤 누른 키패드의 위치로 왼손 오른손을 갱신해주는 코드를 빼먹는 실수가 있었다.
위치를 갱신해주고 나면 제대로 동작한다.