프로그래머스 키패드 누르기

DARTZ·2022년 6월 27일
0

알고리즘

목록 보기
93/135
def solution(numbers, hand):
    answer = ''
    left_hand_x, left_hand_y = 3, 0
    right_hand_x, right_hand_y = 3, 2

    phone_numbers = {
        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]
    }

    for n in numbers:

        if n in [1,4,7]:
            answer += 'L'
            left_hand_x, left_hand_y = phone_numbers[n][0], phone_numbers[n][1]

        elif n in [3,6,9]:
            answer += 'R'
            right_hand_x, right_hand_y = phone_numbers[n][0], phone_numbers[n][1]

        else:
            x, y = phone_numbers[n][0], phone_numbers[n][1]

            right_position = abs(right_hand_x - x) + abs(right_hand_y - y)
            left_position = abs(left_hand_x - x) + abs(left_hand_y - y)

            if right_position > left_position:
                left_hand_x, left_hand_y = phone_numbers[n][0], phone_numbers[n][1]
                answer += 'L'

            elif right_position < left_position:
                right_hand_x, right_hand_y = phone_numbers[n][0], phone_numbers[n][1]
                answer += 'R'

            else:
                if hand == 'right':
                    answer += 'R'
                    right_hand_x, right_hand_y = phone_numbers[n][0], phone_numbers[n][1]

                else:
                    answer += 'L'
                    left_hand_x, left_hand_y = phone_numbers[n][0], phone_numbers[n][1]

    return answer

좌표를 계산해서 하려하다가 계산 공식이 안잡혀서 그냥 dictionary로 초기화 해주고 진행했다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글