Ccode/Coding_Test

2020 카카오 인턴십_키패드 누르기

맨사설 2021. 8. 9. 21:11
728x90

https://programmers.co.kr/learn/challenges?tab=all_challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

문제는 lv1. python3로 필터링한 후 키패드 누르기를 클릭해 시작하였다.

 

 

def solution(numbers, hand):
    lux=[[1,2,3],[4,5,6],[7,8,9],["*",0,"#"]]
    left = [1,4,7]
    right=[3,6,9]
    l=""
    left_hand="*"
    right_hand="#"
    for i in range(len(numbers)):
        if numbers[i] in left:
            left_hand = numbers[i]
            l+='L'
        elif numbers[i] in right:
            right_hand= numbers[i]
            l+='R'
        else:
            x=[(k,l) for k in range(4) for l in range(3) if lux[k][l]==numbers[i]]
            y=[(k,l) for k in range(4) for l in range(3) if lux[k][l]==left_hand]
            z=[(k,l) for k in range(4) for l in range(3) if lux[k][l]==right_hand]
            if (abs(x[0][0]-y[0][0])+abs(x[0][1]-y[0][1])) > (abs(x[0][0]-z[0][0])+abs(x[0][1]-z[0][1])):
                right_hand= numbers[i]
                l+='R'
            elif (abs(x[0][0]-y[0][0])+abs(x[0][1]-y[0][1])) < (abs(x[0][0]-z[0][0])+abs(x[0][1]-z[0][1])):
                left_hand = numbers[i]
                l+='L'
            else:
                if hand=="right":
                    right_hand= numbers[i]
                    l+='R'
                else:
                    left_hand = numbers[i]
                    l+='L'
    return l

 

통과!! 유야호~.~

 

더 쉬운 방법이 있겠지만 일단은 여기까지만 하겠다..

728x90