https://school.programmers.co.kr/learn/courses/30/lessons/67256
def solution(numbers, hand):
numpad = {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], 0:[3,1], '#':[3,2]}
L, R = '*', '#'
answer = []
for n in numbers:
if n in [1, 4, 7]:
answer.append('L')
L = n
elif n in [3, 6, 9]:
answer.append('R')
R = n
else:
ni, nj = numpad[n][0], numpad[n][1]
Li, Lj = numpad[L][0], numpad[L][1]
Ri, Rj = numpad[R][0], numpad[R][1]
if abs(ni-Li) + abs(nj-Lj) > abs(ni-Ri) + abs(nj-Rj):
answer.append('R')
R = n
elif abs(ni-Li) + abs(nj-Lj) < abs(ni-Ri) + abs(nj-Rj):
answer.append('L')
L = n
else:
if hand == 'right':
answer.append('R')
R = n
else:
answer.append('L')
L = n
return ''.join(answer)
각 숫자별 좌표를 활용해 가까운 위치를 찾아낸다.