1.입력 파트
int dp[100001];
int n;
scanf("%d", &n);
dp[1] = 0;
dp[2] = 1;
dp[3] = 1;
2. 발견적 추론 DP 파트
void DP(n){
if(dp[n]!=0) return;
if(n%2 == 0)
dp[n] = MIN(dp[n/2]+1, dp[n-1]+1);
if(n%3 == 0)
dp[n] = MIN(dp[n/3]+1, dp[n-1]+1);
dp[n] = dp[n-1]+1;
}
3. 실행 파트
for(int i=2; i<n; i++){
}