[프로그래머스] 67256. 키패드 누르기

1 분 소요

문제 링크

[프로그래머스] 67256. 키패드 누르기


풀이 과정

딕셔너리와 튜플을 이용해 풀었습니다.

  • d : 0부터 9까지의 숫자 패드의 좌표
  • l : 현재 왼손 엄지가 위치한 좌표
  • r : 현재 오른손 엄지가 위치한 좌표


코드

def solution(numbers, hand):
    d = {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), 0: (3, 1)}
    l = (3, 0)
    r = (3, 2)
    answer = ""

    for number in numbers:
        if number == 1 or number == 4 or number == 7:
            answer += "L"
            l = d[number]
        elif number == 3 or number == 6 or number == 9:
            answer += "R"
            r = d[number]
        else:
            ld = abs(l[0] - d[number][0]) + abs(l[1] - d[number][1])
            rd = abs(r[0] - d[number][0]) + abs(r[1] - d[number][1])

            if ld < rd:
                answer += "L"
                l = d[number]
            elif ld > rd:
                answer += "R"
                r = d[number]
            else:
                if hand == "left":
                    answer += "L"
                    l = d[number]
                else:
                    answer += "R"
                    r = d[number]

    return answer

print(solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right"))
print(solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left"))
print(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right"))

카테고리:

업데이트:

댓글남기기