본문 바로가기

파이썬

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

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

 

코딩테스트 연습 - 키패드 누르기

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

 

<코드>

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

def solution(numbers, hand):
    answer = ''
    lcurrent = '*'
    rcurrent = '#'
    
    for number in numbers:
        if number in [1,4,7]:
            answer += 'L'
            lcurrent = number
        elif number in [3,6,9]:
            answer += 'R'
            rcurrent = number
        else:
            ldistance = abs(pad[lcurrent][0] - pad[number][0]) + abs(pad[lcurrent][1] - pad[number][1])
            rdistance = abs(pad[rcurrent][0] - pad[number][0]) + abs(pad[rcurrent][1] - pad[number][1])
            if ldistance == rdistance:
                answer += hand[0].upper()
                if hand[0] == 'l':
                    lcurrent = number
                else:
                    rcurrent = number
                    
            elif ldistance > rdistance:
                answer += 'R'
                rcurrent = number
            else:
                answer += 'L'
                lcurrent = number
    
    return answer

 

<풀이방법>

1. 1,4,7이면 'L' 3,6,9면 'R' 추가 후 손가락 위치 업데이트

2. 거리를 구하기 위해서 딕셔너리를 만들어 번호별 위치를 지정해주고 눌러야할 숫자와 왼쪽 오른쪽손가락 간의 거리 계산해서 추가 후 손가락 위치 업데이트