Algorithm/programmers/caka実習/キーボードを押す(Pythonを使用)


📖 質問する




📝 解法



パスワード

# 더  가까운  손가락이 무엇인지 알려주는 함수
def closed(left, right, num):
    l = abs(left - num)
    r = abs(right - num)
    
    # 왼손가락 이동 횟수
    l = l // 3 + l % 3
    # 오른손가락 이동 횟수
    r = r // 3 + r % 3
    
    # 왼쪽이 더 가까운 경우
    if l < r:
        return 1
    # 오른쪽이 더 가까운 경우
    elif l > r:
        return -1
    # 왼쪽이랑 오른쪽이랑 똑같은 횟수로 이동해야 하는 경우
    else:
        return 0

def solution(numbers, hand):
    answer = ''
    l = [1, 4, 7]
    r = [3, 6, 9]
    left_finger = 10
    right_finger = 12
    
    for number in numbers:
        if number in l:
            answer += 'L'
            left_finger = number
        elif number in r:
            answer += 'R'
            right_finger = number
        else:
            if number == 0:
                number = 11
            closer = closed(left_finger, right_finger, number)
            if closer == 1:
                answer += 'L'
                left_finger = number
            elif closer == -1:
                answer += 'R'
                right_finger = number
            else:
                if hand == "right":
                    answer += 'R'
                    right_finger = number
                else:
                    answer += 'L'
                    left_finger = number         
    return answer