프로그래머스 키패드 누르기, 파이썬

oong·2022년 9월 7일
0

문제

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

코드

def solution(numbers, hand):
    answer = ''
    pad = [[3, 1], [0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
    left = [3, 0]
    right = [3, 2]
    
    for n in numbers:
        if n in (1, 4, 7):
            answer += 'L'
            left = pad[n]
        elif n in (3, 6, 9):
            answer += 'R'
            right = pad[n]
        else:
            left_dis = abs(pad[n][0] - left[0]) + abs(pad[n][1] - left[1])
            right_dis = abs(pad[n][0] - right[0]) + abs(pad[n][1] - right[1])
            if left_dis > right_dis:
                answer += 'R'
                right = pad[n]
            elif right_dis > left_dis:
                answer += 'L'
                left = pad[n]
            else:
                if hand == 'left':
                    answer += 'L'
                    left = pad[n]
                else:
                    answer += 'R'
                    right = pad[n]
            
    return answer

실수

  • pad array에서 편하게 index로 위치를 사용하기 위해 저렇게 코드를 작성했는데, 처음에는 '0' 패드 위치를 그림처럼 맨 마지막에 작성해서 오류가 났었다.
  • left_dis, right_dis를 구할 때 처음엔
left_dis = abs(pad[n][0] - left[0] + pad[n][1] - left[1])

위와 같이 해놔서 거리 값에서 오류가 발생했다. x, y 좌표 각각 절대값!

0개의 댓글