Algorithm

[카카오 코테 2020 | python] 키패드 누르기

삐롱K 2025. 7. 4. 15:50
728x90
반응형

 

Q1) 문제를 어떻게 이해했나요?
A1)
Q2) 문제를 어떻게 풀 예정인가요?
A2) 각 숫자를 키패드의 좌표 (x, y)로 나타내고, 현재 왼손/오른손 위치에서 거리를 계산해서 규칙에 따라 손가락을 정하면 됩니다.

 

def solution(numbers, hand):
    pos = {
        1:(0,0), 2:(0,1), 3:(0,2),
        4:(1,0), 5:(1,1), 6:(1,2),
        7:(2,0), 8:(2,1), 9:(2,2),
        '*':(3,0), 0:(3,1), '#':(3,2)
    }

    left = pos['*']
    right = pos['#']
    answer = ""

    for num in numbers:
        if num in [1, 4, 7]:
            answer += "L"
            left = pos[num]
        elif num in [3, 6, 9]:
            answer += "R"
            right = pos[num]
        else:
            l_dist = abs(left[0] - pos[num][0]) + abs(left[1] - pos[num][1])
            r_dist = abs(right[0] - pos[num][0]) + abs(right[1] - pos[num][1])
            if l_dist < r_dist:
                answer += "L"
                left = pos[num]
            elif r_dist < l_dist:
                answer += "R"
                right = pos[num]
            else:
                if hand == "right":
                    answer += "R"
                    right = pos[num]
                else:
                    answer += "L"
                    left = pos[num]
    return answer
728x90
반응형