문제 문제링크
정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.
입력
첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 정수 N이 주어진다.
출력
첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.
# 1463번 1로 만들기
n = int(input())
ans = 0
d = [0] * (n+1)
d[1] = 0
# while n >=2:
# D[n] = min(D[n/3], D[n/2], D[n-1] ) + 1
for i in range (2,n+1):
d[i] = d[i-1] + 1
if i%2 == 0 and d[i] > d[i//2] +1:
d[i] = d[i//2] +1
if i % 3 == 0 and d[i] > d[i//3] +1:
d[i] = d[i//3] +1
print(d[n])