320x100
https://school.programmers.co.kr/learn/courses/30/lessons/67256
numbers 리스트를 돌면서 실시간으로 두 개의 엄지손가락 위치를 저장한다.
거리를 어떻게 비교해야하지? 고민을 좀 많이 했는데, 각 리스트의 [0]은 x, [1]은 y좌표를 의미하니
각 좌표 차이에 절댓값 abs()를 씌우고 더하면 거리가 된다! 이 값을 비교하여 더 짧은 쪽 손가락을 사용하게 했다.
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]}
left_loc, right_loc = keypad['*'], keypad['#']
for number in numbers:
if number in [1,4,7]:
answer += 'L'
left_loc = keypad[number]
elif number in [3,6,9]:
answer += 'R'
right_loc = keypad[number]
else:
if abs(keypad[number][0] - left_loc[0]) + abs(keypad[number][1] - left_loc[1]) > abs(keypad[number][0] - right_loc[0]) + abs(keypad[number][1] - right_loc[1]):
answer += 'R'
right_loc = keypad[number]
elif abs(keypad[number][0] - left_loc[0]) + abs(keypad[number][1] - left_loc[1]) < abs(keypad[number][0] - right_loc[0]) + abs(keypad[number][1] - right_loc[1]):
answer += 'L'
left_loc = keypad[number]
else:
if hand == 'left':
answer += 'L'
left_loc = keypad[number]
else:
answer += 'R'
right_loc = keypad[number]
return answer
'코딩테스트' 카테고리의 다른 글
[파이썬] 부족한 금액 계산하기 - 위클리 챌린지 [CODING TEST #11] (0) | 2022.07.21 |
---|---|
[파이썬] 신규 아이디 추천 - 2021 KAKAO BLIND RECRUITMENT [CODING TEST #10] (0) | 2022.07.20 |
[파이썬] 체육복 [CODING TEST #8] (0) | 2022.07.20 |
[파이썬] 모의고사 [CODING TEST #7] (0) | 2022.07.20 |
[파이썬] 크레인 인형뽑기 게임 - 2019 카카오 개발자 겨울 인턴십 [CODING TEST #6] (0) | 2022.07.19 |
댓글