dp[5]
는 5를 1로 만드는 최소 연산 횟수import sys
x = int(sys.stdin.readline())
array = [x]
cnt = 0
while True:
sub = []
cnt += 1
for i in range(len(array)):
if array[i] % 3 == 0:
sub.append(array[i] // 3)
if array[i] % 2 == 0:
sub.append(array[i] // 2)
sub.append(array[i] - 1)
array = sub
if 1 in sub:
break
print(cnt)
import sys
x = int(sys.stdin.readline())
dp = [0] * (x+1)
for i in range(2,x+1):
dp[i] = dp[i-1] + 1
if i % 3 == 0:
dp[i] = min(dp[i],dp[i//3]+1)
if i % 2 == 0:
dp[i] = min(dp[i],dp[i//2]+1)
print(dp[x])
for i in range(2,x+1):
에서 2부터 시작한 이유는 dp[1]
은 이미 1이므로 연산이 필요하지 않기 때문에 dp[1] = 0
이다.https://seongonion.tistory.com/40
https://jae04099.tistory.com/199