소스 코드

def solution(numbers, hand):
    answer = ''

    # 왼손과 오른손의 초기 위치 값
    left = [3, 0]
    right = [3, 2]

    for q in numbers:
        if q == 1 or q == 4 or q == 7:
            answer += 'L'
            left = [q // 3, 0]

        elif q == 3 or q == 6 or q == 9:
            answer += 'R'
            right = [q // 4, 2]

        else:
            if q == 2 or q == 5 or q == 8:
                x = q // 3

            else:
                x = 3

            # 목표 번호와 왼손, 오른손 과의 거리
            left_distance = abs(left[0] - x) + abs(left[1] - 1)
            right_distance = abs(right[0] - x) + abs(right[1] - 1)

            if left_distance > right_distance:
                answer += 'R'
                right = [x, 1]

            elif left_distance < right_distance:
                answer += 'L'
                left = [x, 1]

            # 거리가 같은 경우 주로 사용하는 손에 따라 결정
            else:
                if hand == 'left':
                    answer += 'L'
                    left = [x, 1]

                else:
                    answer += 'R'
                    right = [x, 1]

    return answer

 


해결 방법

1. 왼손과 오른손의 현재 위치값을 저장하면서 확인해서 해결


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.