반응형
말그대로 구현을 하면된다. 다만 여기서 거리의 대한 개념이 나오는데 다음문장을 유심히 읽어야한다
"엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다."
즉, 여기서 거리를 계산할때 단순히 좌표와 좌표사이의 거리(대각선)이 아니고, 좌표간의 이동거리를 계산해야한다.
그래서 난 distance라는 함수를 선언하고 좌표 거리를 계산을 return하였다.
from math import sqrt
def distance(arr1, arr2):
return abs(arr1[0]-arr2[0]) + abs(arr1[1]-arr2[1])
def solution(numbers, hand):
answer = ''
now_l = [0,0]
now_r = [0,2]
position = {
1: [3,0],
2: [3,1],
3: [3,2],
4: [2,0],
5: [2,1],
6: [2,2],
7: [1,0],
8: [1,1],
9: [1,2],
0: [0,1]
}
for number in numbers:
if number in (1,4,7):
answer += 'L'
now_l = position[number]
elif number in (3,6,9):
answer += 'R'
now_r = position[number]
elif number in (2,5,8,0):
l_distance = distance(now_l, position[number])
r_distance = distance(now_r, position[number])
# print(now_l, now_r, number, l_distance, r_distance)
if l_distance < r_distance:
answer += 'L'
now_l = position[number]
elif l_distance == r_distance:
if hand == 'right':
answer += 'R'
now_r = position[number]
else:
answer += 'L'
now_l = position[number]
else:
answer += 'R'
now_r = position[number]
return answer
반응형
'TIL > Algorithm' 카테고리의 다른 글
[HackerRank] Subarray Division (0) | 2021.02.22 |
---|---|
[프로그래머스] 큰 수 만들기 (LV2) (0) | 2021.01.06 |
[프로그래머스] 크레인 인형뽑기 (easy, kakao) (0) | 2021.01.04 |
[프로그래머스] 실패율(easy, kakao) (0) | 2021.01.04 |
[프로그래머스] 시저암호(easy) (0) | 2021.01.04 |