programmers - 키패드 누르기

resilient

·

2021. 4. 21. 20:15

728x90
반응형

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

def distance(x,y):
    return abs(x[0]-y[0])+abs(x[1]-y[1])
#거리구하는 함수
def solution(numbers, hand):

    answer = ''
    keypad = {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 = '*'
    right = '#'
    
  
    for i in numbers:
        if i in [1,4,7]:
            answer+='L'
            left = i
        elif i in [3,6,9]:
            answer+='R'
            right = i
        elif i in [2,5,8,0]:
            if distance(keypad[left],keypad[i]) < distance(keypad[right],keypad[i]):
                answer+='L'
                left = i
            elif distance(keypad[right],keypad[i]) < distance(keypad[left],keypad[i]):
                answer+='R'
                right = i
            else:
                if hand == "right":
                    answer+='R'
                    right = i
                else:
                    answer+='L'
                    left = i
    return answer
반응형