[프로그래머스(Lv 1)/파이썬] 키패드 누르기

jwKim·2023년 11월 1일
0

💻코테코테

목록 보기
39/42

📌 문제

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

📌 풀이

코드

def solution(numbers, hand):
    answer = ''
    
    # 키패드 위치를 좌표로 / 0을 기준점으로
    kp = {
        1 : (-1, 3),   2 : (0, 3),  3 : (1, 3) ,
        4 : (-1, 2),   5 : (0, 2),  6 : (1, 2) ,
        7 : (-1, 1),   8 : (0, 1),  9 : (1, 1) ,
        '*' : (-1, 0), 0 : (0, 0), '#' : (1, 0)
    }
        
    # 각 손의 좌표 초기화
    l = kp['*']
    r = kp['#']
    
    for n in numbers :
        if n in [1, 4, 7] : # 왼손으로 눌러야 하는 키패드들
            answer += 'L'
            l = kp[n]
        elif n in [3, 6, 9] : # 오른손으로 눌러야 하는 키패드들
            answer += 'R'
            r = kp[n]
        else : # 2, 5, 8, 0 중 하나일 때
            loc = kp[n] # 키패드 위치
            l_dist = abs(l[0] - loc[0]) + abs(l[1] - loc[1]) # 왼손에서 눌러야할 키패드 까지의 거리
            r_dist = abs(r[0] - loc[0]) + abs(r[1] - loc[1]) # 오른손에서 눌러야할 키패드 까지의 거리
            
            if l_dist < r_dist : # 왼손이 가까우면
                answer += 'L'
                l = loc
            elif r_dist < l_dist : # 오른손이 가까우면
                answer += 'R'
                r = loc
            else : # 왼손 오른손 둘 다 거리가 같으면
                if hand == 'left' : # 왼손잡이라면
                    answer += 'L'
                    l = loc
                else : # 오른손잡이라면
                    answer += 'R'
                    r = loc
        
    return answer

설명

키패드를 좌표화 하는 것이 키포인트인듯 하다!

0개의 댓글