본문 바로가기
알고리즘/카카오 기출문제

[파이썬🐍] 프로그래머스 : 키패드 누르기

by 코딩개미뚠뚠 2021. 5. 5.
반응형

오늘은 어린이날●▼●

난 더이상 어린이가 아니기에 놀지 못하고 코딩을 한다....^^

def solution(numbers, hand):
    answer = ''
    lastL=10
    lastR=12
    for n in numbers:
        if n in [1,4,7]:
            answer+='L'
            lastL=n
        elif n in [3,6,9]:
            answer+='R'
            lastR=n
        else:
            if n==0:
                n=11
            else:
                n
            absL=abs(n-lastL)
            absR=abs(n-lastR)
            if sum(divmod(absL,3))>sum(divmod(absR,3)):
                answer+='R'
                lastR=n
            elif sum(divmod(absR,3))>sum(divmod(absL,3)):
                answer+='L'
                lastL=n
            else:
                if hand=='left':
                    answer+='L'
                    lastL=n
                else:
                    answer+='R'
                    lastR=n
    return answer

이 문제에서 중요한 점은 *->10, 0->11, #->12으로 치환하는 것이다.

이렇게 치환해야 나눠서 몫과 나머지의 합으로 거리를 계산하는 것을 적용할 수 있다.

여기서 3으로 나누는 이유는 키패드 배열이 3열으로 구성되어 있기 때문에 위아래 거리차이가 3이기 때문이다.

 

반응형

댓글