내 풀이
- 키 패드 숫자를 미리 딕셔너리에 저장했다.
- n이 키패드 오른쪽에 위치하는 숫자는 오른손, 키패드 왼쪽에 위치하는 숫자는 왼손으로 누르도록 했다.
- 숫자를 누를 때마다 손의 위치를 업데이트시켰다.
- n이 키패드 중앙에 위치하는 숫자일 경우, 맨해튼 거리를 구하고 손의 위치를 업데이트시켰다.
def solution(numbers, hand):
answer = ''
dic = {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, right = [3, 0], [3, 2]
for n in numbers:
if n in [3, 6, 9]:
right = dic[n]
answer += 'R'
elif n in [1, 4, 7]:
left = dic[n]
answer += 'L'
else:
r_dist = abs(dic[n][0]-right[0]) + abs(dic[n][1]-right[1])
l_dist = abs(dic[n][0]-left[0]) + abs(dic[n][1]-left[1])
if (r_dist < l_dist) or (r_dist == l_dist and hand == 'right'):
right = dic[n]
answer += 'R'
elif (r_dist > l_dist) or (r_dist == l_dist and hand == 'left'):
left = dic[n]
answer += 'L'
return answer
총평
문제에 나와있는 대로만 구현하면 되는 문제였다.
'알고리즘 > 카카오 EASY' 카테고리의 다른 글
메뉴 리뉴얼 (Level 2) (0) | 2022.06.25 |
---|---|
크레인 인형뽑기 게임 (Level 1) (0) | 2022.06.24 |
숫자 문자열과 영단어 (Level 1) (0) | 2022.05.25 |
오픈채팅방 (Level 2) (0) | 2022.05.24 |
문자열 압축 (Level 2) (0) | 2022.05.23 |