https://www.acmicpc.net/problem/1463
n = int(input())
memo = [0, 0]
for x in range(2, n+1):
arr = [memo[x-1]]
if x % 6 == 0:
arr.extend([memo[x//2], memo[x//3]])
elif x % 3 == 0 :
arr.append(memo[x//3])
elif x % 2 == 0:
arr.append(memo[x//2])
memo.append(min(arr) + 1)
print(memo[n])
memo[x]
: x를 1로 만드는데 필요한 최소 연산 횟수n = int(input())
d = [0] * (n+1)
for i in range(2, n+1):
d[i] = d[i-1] + 1 # 기본 연산
if i % 3 == 0: # 3으로 나누어 떨어지면 3으로 나누기
d[i] = min(d[i], d[i//3] + 1)
if i % 2 == 0: # 2로 나누어 떨어지면 2로 나누기
d[i] = min(d[i], d[i//2] + 1)
print(d[n])