정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.
정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.
2
1
10
3
def DFS(X, cnt):
global rst
if cnt >= rst or X < 1:
return
elif X == 1:
rst = min(rst, cnt)
cnt += 1
if X % 3 == 0:
DFS(X // 3, cnt)
if X % 2 == 0:
DFS(X // 2, cnt)
DFS(X - 1, cnt)
if __name__ == "__main__":
X = int(input())
rst = X
DFS(X, 0)
print(rst)