[프로그래머스 | 파이썬] 키패드 누르기

devheyrin·2022년 6월 3일
0

codingtest

목록 보기
49/65

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/67256

코드

def solution(numbers, hand):
    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),
              0: (3, 1)}
    
    left = (3, 0)
    right = (3, 2)
    answer = ''
    for number in numbers:
        if number in [1, 4, 7]:
            answer += "L"
            left = keypad[number]
        elif number in [3, 6, 9]:
            answer += "R"
            right = keypad[number]
        else:
            x, y = keypad[number]
            left_dist = abs(left[0]-x) + abs(left[1]-y)
            right_dist = abs(right[0]-x) + abs(right[1]-y)
            if left_dist == right_dist:
                if hand == "left":
                    answer += "L"
                    left = keypad[number]
                else:
                    answer += "R"
                    right = keypad[number]
            if left_dist > right_dist:
                answer += "R"
                right = keypad[number]
            elif left_dist < right_dist:
                answer += "L"
                left = keypad[number]
        
    return answer

풀이 설명

문제의 요구사항을 따라 착실하게 구현하면 되는 문제였다!
처음 시도에서는 키패드를 누른 뒤 누른 키패드의 위치로 왼손 오른손을 갱신해주는 코드를 빼먹는 실수가 있었다.
위치를 갱신해주고 나면 제대로 동작한다.

profile
개발자 헤이린

0개의 댓글