[풀이 방법]

  • 각 자리 수를 모두 0으로 만들어주면 0으로 갈 수 있으므로, 각 자리 수를 0으로 만들거나 10으로 만들어서 0으로 만들었습니다.
  • ±10^c(c>=0)의 거리만큼 이동할 수 있으므로, 0으로 가는 것과 10으로 가는 것중 버튼을 적게 누르는 값을 answer에 더해주었습니다.(이때, 10으로 간다면 올림을 해주었습니다.)
  • 이때, 가장 문제가 되는 경우가 5인 경우였습니다. 5인 경우 0과 10까지의 거리가 동일하고, 올림할 다음 수가 5 이상인 경우 올림을 해야 더 적은 버튼을 누를 수 있으므로 올림하는 경우로 처리하였습니다.

 

[풀이 코드]

from collections import deque


def solution(storey):
    answer = 0
    q = deque([i for i in str(storey)[::-1]])
    roundup = 0

    while q:
        num = int(q.popleft())

        if roundup == 1:
            num += 1
            roundup = 0

        answer += num if 10 - num > num else 10 - num
        roundup = 1 if 10 - num < num else 1 if q and num == 5 and int(q[0]) >= 5 else 0

    return answer + 1 if roundup == 1 else answer

+ Recent posts