[9/22] 키패드 누르기

이경준·2021년 9월 22일
0

코테

목록 보기
122/140
post-custom-banner

레벨1 문제

내 코드

def solution(numbers, hand):
    answer = ''
    arr = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2], [3, 1], [3, 0], [3, 2]]
    left, right = arr[-2], arr[-1]
    
    for n in numbers:
        if n == 0:
            n = 10
        
        if ( n in [1, 4, 7] ):
            left = arr[n-1]
            answer += 'L'
            
        elif ( n in [3, 6, 9] ):
            right = arr[n-1]
            answer += 'R'
            
        else:
            left_dis = abs(left[0] - arr[n-1][0]) + abs(left[1] - arr[n-1][1])
            right_dis = abs(right[0] - arr[n-1][0]) + abs(right[1] - arr[n-1][1])
            if ( left_dis < right_dis ):
                left = arr[n-1]
                answer += 'L'
            elif ( left_dis > right_dis ):
                right = arr[n-1]
                answer += 'R'
            # 거리가 같음
            else:
                if ( hand == 'left' ):
                    left = arr[n-1]
                    answer += 'L'
                else:
                    right = arr[n-1]
                    answer += 'R'
                    
    return answer

로직

  • 노가다 했다. 효율성은 문제 자체가 노가다라 걸리지는 않겠지만, 더 효율적이고 간단한 코드를 구현하고 싶다.

효율적인 코드

피드백

profile
The Show Must Go On
post-custom-banner

0개의 댓글