https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
<코드>
pad = {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]}
def solution(numbers, hand):
answer = ''
lcurrent = '*'
rcurrent = '#'
for number in numbers:
if number in [1,4,7]:
answer += 'L'
lcurrent = number
elif number in [3,6,9]:
answer += 'R'
rcurrent = number
else:
ldistance = abs(pad[lcurrent][0] - pad[number][0]) + abs(pad[lcurrent][1] - pad[number][1])
rdistance = abs(pad[rcurrent][0] - pad[number][0]) + abs(pad[rcurrent][1] - pad[number][1])
if ldistance == rdistance:
answer += hand[0].upper()
if hand[0] == 'l':
lcurrent = number
else:
rcurrent = number
elif ldistance > rdistance:
answer += 'R'
rcurrent = number
else:
answer += 'L'
lcurrent = number
return answer
<풀이방법>
1. 1,4,7이면 'L' 3,6,9면 'R' 추가 후 손가락 위치 업데이트
2. 거리를 구하기 위해서 딕셔너리를 만들어 번호별 위치를 지정해주고 눌러야할 숫자와 왼쪽 오른쪽손가락 간의 거리 계산해서 추가 후 손가락 위치 업데이트
'파이썬' 카테고리의 다른 글
[백준] 1987번 알파벳 (파이썬) (0) | 2022.06.06 |
---|---|
[백준] 1697번 숨바꼭질 파이썬 (0) | 2022.06.03 |
[백준] 2841 외계인의 기타연주 (0) | 2022.06.01 |
[백준] 2644번 촌수계산 (0) | 2022.06.01 |
[백준] 21608번 상어 초등학교 (0) | 2022.05.31 |