https://programmers.co.kr/learn/courses/30/lessons/67256
숫자를 왼손 엄지손가락으로 누른 경우 L 추가와 함께 그 숫자의 인덱스(left)를 계속해서 갱신해준다.
오른손으로 누른 경우 마찬가지이다.
거리를 계산해서 가까운 손가락으로 누를 수 있도록 해준다.
def solution(numbers, hand):
keypad=[[1,2,3],[4,5,6],[7,8,9],["*",0,"#"]]
result=[]
left,right=(3,0),(3,2)
def find_index(value):
for i in range(4):
for j in range(3):
if keypad[i][j]==value:
return (i,j)
for number in numbers:
if number in (1,4,7):
result.append("L")
left=find_index(number)
elif number in (3,6,9):
result.append("R")
right=find_index(number)
else:
x,y=find_index(number)
left_x,left_y=left
right_x,right_y=right
left_dis=abs(left_x-x)+abs(left_y-y)
right_dis=abs(right_x-x)+abs(right_y-y)
if left_dis<right_dis:
result.append("L")
left=find_index(number)
elif left_dis>right_dis:
result.append("R")
right=find_index(number)
else:
if hand=="left":
result.append("L")
left=find_index(number)
else:
result.append("R")
right=find_index(number)
return ("".join(result))