https://programmers.co.kr/learn/courses/30/lessons/67256
Solution
def middle(key_pad, current_left, current_right, num):
left = [0,0]
right = [0,0]
middle = [0,0]
for i in range(4):
for j in range(3):
if key_pad[i][j] == num:
middle = [i,j]
if key_pad[i][j] == current_left:
left = [i,j]
if key_pad[i][j] == current_right:
right = [i,j]
dist_left = abs(middle[0]-left[0]) + abs(middle[1]-left[1])
dist_right = abs(middle[0]-right[0]) + abs(middle[1]-right[1])
return dist_left, dist_right
def solution(numbers, hand):
key_pad = [[1,2,3], [4,5,6], [7,8,9], [11,0,12]]
left_number = [1,4,7]
right_number = [3,6,9]
answer = ''
current_left = 11
current_right = 12
for i in numbers:
if i in left_number:
answer += 'L'
elif i in right_number:
answer += 'R'
else:
dist_left, dist_right = middle(key_pad, current_left, current_right, i)
if dist_left > dist_right:
answer += 'R'
elif dist_left < dist_right:
answer += 'L'
else:
if hand == 'left':
answer += 'L'
else:
answer += 'R'
if answer[-1] == 'L':
current_left = i
else:
current_right = i
return answer
처음에 키패드에서 *을 11로, #을 12로 설정을 해놓고 처음 왼쪽 손가락과 오른쪽 손가락 위치를 각각 11과 12로 위치시켰다. 그리고 numbers를 하나씩 검사하면서 left_number에 있을 경우, right_number에 있을 경우, 가운데에 위치할 경우로 경우를 나눠서 구현했다.가운데(2, 5, 8, 0)일 경우 middle함수에 current_left와 current_right, 그리고 가운데에 위치한 해당 번호를 넘겨주고 가까운 손가락을 구했다. numbers의 번호를 하나씩 검사하고 answer에 담은 후 'L'일 경우와 'R'일 경우에 맞게 현재 손가락 위치를 갱신해준다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 보석쇼핑 / Python / 2020 카카오 인턴십 (0) | 2020.07.30 |
---|---|
[프로그래머스] 수식 최대화 / Python / 2020 카카오 인턴십 (0) | 2020.07.10 |
[프로그래머스] 불량 사용자 / Python / 2019 카카오 개발자 겨울 인턴십 (2) | 2020.06.26 |
[프로그래머스] 파일명 정렬 / Python / 2018 KAKAO BLIND RECRUITMENT (0) | 2020.06.21 |
[프로그래머스] 크레인 인형뽑기 게임 / Python / 2019 KAKAO 겨울 인턴십 (0) | 2020.05.12 |
,