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

Effy_ee·2023년 10월 30일
0

코딩테스트

목록 보기
78/118

👾(Lv.01) 키패드누르기

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

def solution(numbers, hand):
    answer = ''
    key_dict = {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)}
    
    left = [1, 4, 7]
    right = [3, 6, 9]
    lhand = '*'
    rhand = '#'
    
    for num in numbers:
        if num in left:
            answer += 'L'
            lhand = num
        elif num in right:
            answer += 'R'
            rhand = num
        else:
            curPos = key_dict[num]
            lPos = key_dict[lhand]
            rPos = key_dict[rhand]
            
            ldist = abs(curPos[0]-lPos[0]) + abs(curPos[1]-lPos[1])
            rdist = abs(curPos[0]-rPos[0]) + abs(curPos[1]-rPos[1])
            
            if ldist < rdist:
                answer += 'L'
                lhand = num
            elif ldist > rdist:
                answer += 'R'
                rhand = num
            else:
                if hand == "left":
                    answer += 'L'
                    lhand = num
                else:
                    answer += 'R'
                    rhand = num
    return answer

0개의 댓글