https://www.acmicpc.net/problem/1463
#include<iostream>
using namespace std;
#include<math.h>
int dp[1000001];
int main()
{
dp[1] = 0;
int N;
cin >> N;
for (int i = 2; i <= N; i++)
{
dp[i] = dp[i - 1] + 1;
if (i % 2 == 0)
dp[i] = min(dp[i], (dp[i / 2] + 1));
if (i % 3 == 0)
dp[i] = min(dp[i],(dp[i / 3] + 1));
}
cout << dp[N];
}
DP는 초기값 , 점화식 찾아서 반복문으로 값을 구해나가는게 기본구조
https://www.youtube.com/watch?v=5leTtB3PQu0&ab_channel=BaaarkingDog