본문 바로가기

코테

[프로그래머스] <[카카오 인턴] 키패드 누르기> 파이썬

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):
    L, R = (3,0),(3,2)
    answer = ""
    for number in numbers :
        print(L,R)
        if str(number) in "147" : 
            answer += "L"
            L = (int(number/3) , 0)
        elif str(number) in "369" :
            answer += "R"
            R = (int(number/3) -1, 2)
        else : 
            l, r = abs(L[0]-int(number/3)) + abs(L[1] - 1), abs(R[0]-int(number/3)) + abs(R[1] - 1)
            if number == 0 : 
                if abs(L[0] - 3) + abs(L[1] - 1) < abs(R[0] - 3) + abs(R[1] - 1):
                    answer += "L"
                    L = (3,1)
                elif abs(L[0] - 3) + abs(L[1] - 1) > abs(R[0] - 3) + abs(R[1] - 1) :
                    answer += "R"
                    R = (3,1)
                else :
                    if hand == "left" : 
                        answer += "L"
                        L = (3,1)    
                    else : 
                        answer += "R"
                        R = (3,1)
            else :
                if l<r:
                    answer += "L"
                    L = (int(number/3),1)
                elif r<l :
                    answer += "R"
                    R = (int(number/3),1)
                else :
                    if hand == "left" : 
                        answer += "L"
                        L = (int(number/3),1)    
                    else : 
                        answer += "R"
                        R = (int(number/3),1)
    
    return answer

정확성 테스트

테스트 1 통과 (0.01ms, 10.3MB)
테스트 2 통과 (0.01ms, 10.3MB)
테스트 3 통과 (0.02ms, 10.3MB)
테스트 4 통과 (0.01ms, 10.3MB)
테스트 5 통과 (0.02ms, 10.4MB)
테스트 6 통과 (0.03ms, 10.2MB)
테스트 7 통과 (0.04ms, 10.3MB)
테스트 8 통과 (0.08ms, 10.3MB)
테스트 9 통과 (0.06ms, 10.2MB)
테스트 10 통과 (0.06ms, 10.2MB)
테스트 11 통과 (0.14ms, 10.3MB)
테스트 12 통과 (0.13ms, 10.2MB)
테스트 13 통과 (0.26ms, 10.1MB)
테스트 14 통과 (1.03ms, 10.3MB)
테스트 15 통과 (1.32ms, 10.3MB)
테스트 16 통과 (1.48ms, 10.3MB)
테스트 17 통과 (2.39ms, 10.3MB)
테스트 18 통과 (2.08ms, 10.3MB)
테스트 19 통과 (2.22ms, 10.3MB)
테스트 20 통과 (2.24ms, 10.3MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0