-
[Programmers] 키패드 누르기programing/Algorithm 2021. 2. 14. 18:17
키패드 누르기
2020 카카오 인턴십
level 1
phython3
def sub_tuple(t1, t2): return (t1[0] - t2[0], t1[1] - t2[1]) def abs_tuple(t): return (abs(t[0]), abs(t[1])) def get_proper_hand(hand, left, right, left_location, right_location, target_location): left_distance = sum(abs_tuple(sub_tuple(left_location, target_location))) right_distance = sum(abs_tuple(sub_tuple(right_location, target_location))) if left_distance == right_distance: return left if hand == 'left' else right else: return left if left_distance < right_distance else right def solution(numbers, hand): # init left = 'L' right = 'R' left_location = (3, 0) right_location = (3, 2) left_hands = [1, 4, 7] right_hands = [3, 6, 9] center_hands = [2, 5, 8, 0] result = [] for number in numbers: if number in left_hands: result.append(left) left_location = (left_hands.index(number), 0) elif number in right_hands: result.append(right) right_location = (right_hands.index(number), 2) else: target_location = (center_hands.index(number), 1) proper = get_proper_hand(hand, left, right, left_location, right_location, target_location) if proper == left: result.append(left) left_location = (center_hands.index(number), 1) else: result.append(right) right_location = (center_hands.index(number), 1) return ''.join(result)
문제의 설명에 따라 단순히 구현만 하면 되는 쉬운 문제입니다.
해당 문제에서 제일 중요한 것은, 가운데 숫자들을 누를 때 거리를 비교하는 것입니다.
저는 left_location 과 right_location, taregt_location 을 2차원 배열 상의 인덱스로 생각하여 거리를 구했습니다. 이러면 단순히 각 좌표 값의 차이의 절대값이 거리가 되기 때문입니다.
'programing > Algorithm' 카테고리의 다른 글
[Programmers] 최대공약수와 최소공배수 (0) 2021.03.07 [Programmers] 폰켓몬 (0) 2021.03.07 [Programmers] 제일 작은 수 제거하기 (0) 2021.02.14 [Programmers] 정수 제곱근 판별 (0) 2021.02.13 [Programmers] 정수 내림차순으로 배치하기 (0) 2021.02.11 댓글