
[문제 링크]
https://programmers.co.kr/learn/courses/30/lessons/67256
[소스코드]
def solution(numbers, hand): answer = '' key_dict = {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)} left = [1,4,7] right = [3,6,9] lhand = '*' rhand = '#' for i in numbers: if i in left: answer += 'L' lhand = i elif i in right: answer += 'R' rhand = i else: curPos = key_dict[i] lPos = key_dict[lhand] rPos = key_dict[rhand] ldist = abs(curPos[0]-lPos[0]) + abs(curPos[1]-lPos[1]) rdist = abs(curPos[0]-rPos[0]) + abs(curPos[1]-rPos[1]) if ldist < rdist: answer += 'L' lhand = i elif ldist > rdist: answer += 'R' rhand = i else: if hand == 'left': answer += 'L' lhand = i else: answer += 'R' rhand = i return answer
[풀이]
- 각 버튼을 튜플로 좌표화 시켜서 사전에 저장한다.
numbers
를 순회하면서 왼손과 오른손의 좌표를 계속 업데이트한다.- 1,4,7인 경우 L, 3,6,9인 경우 R을 할당하고
- 아닌 경우 현재 위치, 현재왼손위치, 현재 오른손위치를 딕셔너리에서 찾아서 거리를 계산한다.
댓글을 사용할 수 없습니다.