https://school.programmers.co.kr/learn/courses/30/lessons/67256
키패드를 좌표로 딕셔너리에 저장해주고
1) number가 1, 4, 7이면 'L' & 현재 위치 저장
2) number가 3, 6, 9이면 'R' & 현재 위치 저장
3) number가 2, 5, 8, 0이면 현재 왼손과 오른손의 위치를 비교해서 더 가까운 손으로 출력
ㄴ 거리가 같으면 hand에 따라 출력해준다.
# 프로그래머스 67256: 키패드 누르기 (2020 카카오 인턴십)
def solution(numbers, hand):
answer = ''
keypad = {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]}
l = '*'
r = '#'
for i in numbers:
if i == 1 or i == 4 or i == 7:
answer += 'L'
l = i
elif i == 3 or i == 6 or i == 9:
answer += 'R'
r = i
else:
lenL = abs((keypad[i][0] - keypad[l][0])) + abs((keypad[i][1] - keypad[l][1]))
lenR = abs((keypad[i][0] - keypad[r][0])) + abs((keypad[i][1] - keypad[r][1]))
if lenL > lenR:
answer += 'R'
r = i
elif lenL < lenR:
answer += 'L'
l = i
else:
if hand == 'right':
answer += 'R'
r = i
else:
answer += 'L'
l = i
return answer
딕셔너리에 좌표를 저장한다는 아이디어만 떠올리면 쉽게 풀 수 있을 것 같다.
나는 안 떠올라서 조금 헤맸다 🥲
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Lv1] 실패율 (Python) - 2019 KAKAO BLIND RECRUITMENT (0) | 2023.01.26 |
---|---|
[프로그래머스 | Lv1] 크레인 인형뽑기 게임 (Python) - 2019 카카오 개발자 겨울 인턴십 (0) | 2023.01.26 |
[프로그래머스 | Lv1] 숫자 짝꿍 (Python) (0) | 2023.01.11 |
[프로그래머스 | Lv1] 개인정보 수집 유효기간 (Python) - 2023 KAKAO BLIND RECRUITMENT (0) | 2023.01.07 |
[프로그래머스 | Lv1] 햄버거 만들기 (Python) (0) | 2023.01.07 |