풀이
스마트폰에서의 키패드의 [i, j]위치를 미리 리스트에 초기화 하여 만약 2, 5, 8, 0을 누르게 됬을 때, 점과 점사이의 거리를 구할 수 있게 하여 해결했습니다.
처음 시작할 때 왼쪽 손이 위치한 '*'의 위치와 오른 손이 위치한 '#'의 [i, j] 위치를 꼭 초기화 해야함을 주의해야 합니다.
코드
def solution(numbers, hand):
answer = ''
phone = [[1, 4, 7], [2, 5, 8, 0], [3, 6, 9]]
# *, #의 위치도 처음에 초기화 해야함을 잊지말자
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #
pad = [[3, 1], [0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2], [3, 0], [3, 2]]
left_cur = 10
right_cur = 11
for number in numbers:
if number in phone[0]:
answer += 'L'
left_cur = number
elif number in phone[2]:
answer += 'R'
right_cur = number
elif number in phone[1]:
l_len = abs(pad[left_cur][0] - pad[number][0]) + abs(pad[left_cur][1] - pad[number][1])
r_len = abs(pad[right_cur][0] - pad[number][0]) + abs(pad[right_cur][1] - pad[number][1])
if l_len > r_len:
answer += 'R'
right_cur = number
elif l_len < r_len:
answer += 'L'
left_cur = number
elif hand == 'right':
answer += 'R'
right_cur = number
elif hand == 'left':
answer += 'L'
left_cur = number
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 실패율 (0) | 2021.03.06 |
---|---|
[Python] 비밀지도 (0) | 2021.02.28 |
[Python] 2016년 (0) | 2021.02.21 |
[Python] K번째수 (0) | 2021.02.20 |
[Python] 체육복 (0) | 2021.02.13 |