문제는 이해가 가지만 구현을 어떻게 해야할지 한참 고민을 했다.
각 번호의 위치를 x,y에 위치로 표현하여 중앙 열을 누를때 거리 계산이 쉽도록 하였다.
각 번호에 맞는 위치를 저장하였다. 시작은 *,#에서 시작한다.
phone = [[3,1],[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]]
빨간 원은 왼손 파란 원은 오른손으로 표시, 노란 원은 누를 번호
def check(pos1, pos2):
return abs(pos1[0]-pos2[0])+abs(pos1[1]-pos2[1])
def solution(numbers, hand):
answer = ''
phone = [[3,1],[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]]
left, right = [3,0],[3,2]
for i in numbers:
if i in [1,4,7]:
left = phone[i]
answer+='L'
elif i in [3,6,9]:
right = phone[i]
answer+='R'
elif i in [2,5,8,0]:
leftCnt = check(left, phone[i])
rightCnt = check(right, phone[i])
if leftCnt>rightCnt:
right = phone[i]
answer+='R'
elif leftCnt<rightCnt:
left = phone[i]
answer+='L'
else:
if hand=="right":
right = phone[i]
answer+='R'
else:
left = phone[i]
answer+='L'
return answer