티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/67256
- 해설 :
구현 문제이다 12개의 키가 있는 번호판에서 다음번에 누르려는 키패드에서 왼쪽 열에 있는 경우 왼손으로, 오른쪽 열에 있는 경우 오른손으로 누르고 중간 열에 잇는 경우 가장 가까운 손으로 키패드를 누르며 이동시키면 된다. 핵심은 키패드간의 거리를 계산하는 방법이다.
- 풀이 :
현재 왼손과 오른손의 위치를 저장하는 변수를 만들고 다음번에 누르려는 키가 패드의 왼쪽이나 오른쪽일 경우 해당하는 손가락을, 중간열에 위치할 경우 현재 손가락의 위치와 이동하려는 좌표간의 거리를 계산하는 diff함수를 사용하여 짧은 쪽의 손가락을 이동하게 구현하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | def diff(h,i): return abs((h//3-i//3)) + abs((h%3-i%3)) def solution(numbers, hand): left = [0,3,6] right = [2,5,8] answer = '' lhand = 9 rhand = 11 for i in numbers: if i == 0: i = 11 i -= 1 if i in left: answer += 'L' lhand = i elif i in right: answer += 'R' rhand = i else: ld = diff(lhand,i) rd = diff(rhand,i) if ld < rd: lhand = i answer += 'L' elif ld > rd: rhand = i answer += 'R' else: if hand == "right": rhand = i answer += 'R' else: lhand = i answer += 'L' return answer | cs |
320x100
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - 프로그래머스 : 완주하지 못한 선수 (0) | 2022.01.17 |
---|---|
(Python) - 프로그래머스 : 음양 더하기 (0) | 2022.01.17 |
(Python) - 프로그래머스 (2021 카카오 채용연계형 인턴쉽) : 숫자 문자열과 영단어 (0) | 2022.01.17 |
(Python) - 프로그래머스(2019 KAKAO BLIND RECRUITMENT) : 오픈채팅방 (0) | 2022.01.17 |
(Python) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 문자열 압축 (0) | 2022.01.17 |
댓글
© 2022 WonSeok, All rights reserved