L1 : 키패드 누르기 Python

jhyunn·2023년 1월 23일
0

Programmers

목록 보기
54/69

L1 : 키패드 누르기 Python

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

def solution(numbers, hand):
    numpad = {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]}
    L, R = '*', '#'
    answer = []
    
    for n in numbers:
        if n in [1, 4, 7]:
            answer.append('L')
            L = n
        elif n in [3, 6, 9]:
            answer.append('R')
            R = n
        
        else:
            ni, nj = numpad[n][0], numpad[n][1]
            Li, Lj = numpad[L][0], numpad[L][1]
            Ri, Rj = numpad[R][0], numpad[R][1]

            if abs(ni-Li) + abs(nj-Lj) > abs(ni-Ri) + abs(nj-Rj):
                answer.append('R')
                R = n
            elif abs(ni-Li) + abs(nj-Lj) < abs(ni-Ri) + abs(nj-Rj):
                answer.append('L')
                L = n
            else:
                if hand == 'right':
                    answer.append('R')
                    R = n
                else:
                    answer.append('L')
                    L = n
    return ''.join(answer)

각 숫자별 좌표를 활용해 가까운 위치를 찾아낸다.

profile
https://github.com/Sungjeonghyun

0개의 댓글