하루하나코딩

백준 1463 : 1로 만들기 c++

HAHAKO 2023. 4. 5. 23:02

코드

#include <iostream>
#include <algorithm>

using namespace std;

int dp[1000001];

int main(){

    int N;
    cin >> N;
    
    for(int i = N-1; i > 0; i--){
        if(i > N/2){
            dp[i] = dp[i+1]+1;
        }
        else if(i > N/3){
            dp[i] = min(dp[i+1]+1, dp[2*i]+1);
        }
        else{
            dp[i] = min(min(dp[i+1]+1, dp[2*i]+1), dp[3*i]+1);
        }
    }
    cout << dp[1] << '\n';

    return 0;
}

알게된 점

10의 6승은 0이 6개다.

dp로 그냥 풀면 된다.