처음에 backtracking으로 풀려했으나, recursion limit error를 받아버렸다 (brute force로 푸는 건 아닌걸로)
-> 규칙을 찾아주어야 한다
이 문제는 storey의 자릿수를 줄여가며 1)6~9라면 올려주고, 2)0~4라면 내려주고, 3)5라면 다음 자릿수를 기준으로 올릴지 내릴지 정해주면 된다
3)의 경우, 다음 자릿수가 0~4라면 내려주고, 5~9라면 올려준다
3)의 경우에서, 다음 자릿수가 5일때 내려줘야할 지 올려줘야할 지 정해줘야하는데, 아래의 예시를 통해 올려줘야한다는 사실을 알 수 있다
# 올려준다면
555 -> 560 -> 600 -> 1000 -> 0: 14
# 내려준다면
555 -> 550 -> 500 -> 0: 15
def solution(storey):
count = 0
while storey > 0:
remainder = storey % 10
if remainder > 5: #올림
count += 10 - remainder
storey += 10
elif remainder <= 5: #내림
count += remainder
if remainder == 5: # remainder가 5라면 다음 자릿수를 기준으로 올릴지 내릴지 정해야함
next_remainder = (storey//10)%10 #0~4라면 내림 5~9라면 올림
if next_remainder > 4:
storey += 10
storey //= 10 #자릿수를 줄여나감
return count