티스토리 뷰

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 solution(numbers, hand):
    answer = ''
    keypad = [[1, 4, 7, '*'], [2, 5, 8, 0], [3, 6, 9, '#']]
    
    pl = [0, 3]
    pr = [2, 3]
    
    for num in numbers:
        if num in keypad[0]:
            answer += 'L'
            pl = [0, keypad[0].index(num)]
        elif num in keypad[2]:
            answer += 'R'
            pr = [2, keypad[2].index(num)]
        else:
            idx = keypad[1].index(num)
            
            l = abs(pl[0] - 1) + abs(pl[1] - idx)
            r = abs(pr[0] - 1) + abs(pr[1] - idx)
            
            if l == r:
                if hand == 'right':
                    answer += 'R'
                    pr = [1, idx]
                else:
                    answer += 'L'
                    pl = [1, idx]
            elif l > r:
                answer += 'R'
                pr = [1, idx]
            else:
                answer += 'L'
                pl = [1, idx]
                
    return answer
공지사항
최근에 올라온 글
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함