less than 1 minute read

1. 개요

2. 완전탐색 풀이

def solution(number):
    if number<=1:
        return number

    # number를 10으로 나누었을때의 mock이 다음 재귀호출때 검사할 number
    # remain이 엘리베이터 버튼을 눌러야 되는 횟수가 된다
    number, remain = number//10, number%10
    
    # remain을 그대로 버튼을 누를지
    # 아니면 올림을 해서 10-remain번 버튼을 누르고 number+1을 다시 검사할지의 두가지 경우의수가 있다.
    # 따라서 두개를 비교하여 최솟값을 반환하도록 재귀호출을 하고
    # 최대 시간복잡도는 약 2**9=512로 예상된다.
    return min(solution(number)+remain, solution(number+1)+10-remain)

Leave a comment