반응형
풀이
def solution(numbers, hand):
answer = ''
current_left = [4, 1]
current_right = [4, 3]
location = {1: [1, 1], 2: [1, 2], 3: [1, 3], 4: [2, 1], 5: [2, 2],
6: [2, 3], 7: [3, 1], 8: [3, 2], 9: [3, 3], 0: [4, 2]}
for num in numbers:
if num == 1 or num == 4 or num == 7:
answer += 'L'
current_left = location[num]
elif num == 3 or num == 6 or num == 9:
answer += 'R'
current_right = location[num]
else:
left_way = abs(current_left[0] - location[num][0]) + abs(current_left[1] - location[num][1])
right_way = abs(current_right[0] - location[num][0]) + abs(current_right[1] - location[num][1])
if left_way == right_way:
if hand == 'left':
answer += 'L'
current_left = location[num]
elif hand == 'right':
answer += 'R'
current_right = location[num]
elif left_way < right_way:
answer += 'L'
current_left = location[num]
elif left_way > right_way:
answer += 'R'
current_right = location[num]
return answer
저는 키 패드를 행과 열로 구분해서 location이라는 Dictionary를 만들어 풀었어요.
먼저 현재 왼손과 오른손의 위치를 나누고 1,4,7은 왼손 3,6,9는 오른손이 가도록 했어요.
이제 2,5,8,0 부분을 잘 처리해 주어야 하는데.
left_way와 right_way는 현재 손가락의 위치에서 가로와 세로로 얼마나 가야 하는지를 계산해 준 값이에요.
1.만약 left_way와 right_way가 같다면
=> hand를 비교해서 이동할 손가락 결정
2. 둘 중 하나가 더 작으면
=> 작은쪽 손가락이 이동
이렇게 해주었어요.
좌표를 설정한다는 생각을 떠올리면 할만한 문제인데 처음에 생각이 안나서 생각하는데 시간이 조금 들었던 문제네요.
반응형
'개발 > PS' 카테고리의 다른 글
[Python] 프로그래머스 LV1 실패율 (0) | 2022.01.01 |
---|---|
[Python] 프로그래머스 Lv2 오픈 채팅방 (0) | 2021.12.31 |
프로그래머스 Lv1 크레인 인형뽑기 게임 (파이썬) (0) | 2021.12.30 |
프로그래머스 Lv1 숫자 문자열과 영단어(파이썬) (0) | 2021.12.30 |
프로그래머스 Lv1 신규 아이디 추천 (파이썬) (0) | 2021.12.30 |