쉬운거라 별생각 안했는데 이거 맞지 않나???

https://www.acmicpc.net/problem/12852



#include <iostream>
#include <algorithm>
using namespace std;

int N;
int dp[1000001];

int main()
{
    cin>>N;

    dp[1]=0;
    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]<<endl;
    
    while(N>0)
    {
        cout<<N<<" ";
        
        if(N==1)
            break;
        
        if(dp[N]==dp[N-1]+1)
            N-=1;
            
        else if(dp[N]==dp[N/2]+1)
            N/=2;
        
        else if(dp[N]==dp[N/3]+1)
            N/=3;
    }
}