キーボードを押す


質問元:プログラマ

質問の概要

키패드 누르기
- 왼손 엄지는 1,4,7 을 오른손 엄지는 3,6,9 를 누른다.
- 2,5,8,0 은 누를 키패드와 더 위치한 엄지가 누른다.
- 엄지는 상,,,우로만 움직일 수 있으면 한 칸은 거리 1로 계산
- 거리가 같다면 오른손 잡이는 오른엄지, 왼손 잡이는 왼엄지 사용

입력)
numbers = [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]
hand = "right"

출력)
result = "LRLLLRLLRRL"

コード#コード#

def solution(numbers, hand):
    answer = ''
    left = 10 
    right = 12
    
    for i in numbers:
        if i in [1,4,7]:
            answer += 'L'
            left = i # 왼손 엄지의 위치 바꿈
        elif i in [3,6,9]: 
            answer += 'R'
            right = i # 오른손 엄지의 위치 바꿈
        else: 
            i = 11 if i == 0 else i
            
            absL = abs(i-left)
            absR = abs(i-right)
            # 3을 나눈 몫과 나머지를 더하면 거리가 나옴
            if sum(divmod(absL,3)) < sum(divmod(absR,3)): 
                answer += 'L'
                left = i 
            elif sum(divmod(absL,3)) > sum(divmod(absR,3)):
                answer += 'R'
                right = i 
            else:
                if hand == 'right':
                    answer += 'R'
                    right = i 
                else: 
                    answer += 'L'
                    left = i
            
    return answer
solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], 'right')
'LRLLLRLLRRL'

定義された変数値の決定

# left = 4, i = 8 인 경우
absL = 4
sum(divmod(absL,3))
2
# right = 6, i = 8 인 경우
absR = 2 
sum(divmod(absR,3))
2