[풀이 방법]
- 각 자리 수를 모두 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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 디펜스 게임 (0) | 2023.03.14 |
---|---|
[프로그래머스/python] 덧칠하기 (0) | 2023.03.14 |
[프로그래머스/python] 우박수열 정적분 (0) | 2023.03.09 |
[프로그래머스/python] 테이블 해시 함수 (0) | 2023.03.09 |
[프로그래머스/python] 혼자하는 틱택토 (0) | 2023.03.07 |