페이지

1463번: 1로 만들기

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


#include<cstdio>
int dp[1000001], n;
int main() {
    scanf("%d", &n);
    for (int i = 2; i <= n; i++) {
        dp[i] = dp[i - 1] + 1;
        if (i % 2 == 0 && dp[i]>dp[i / 2] + 1) dp[i] = dp[i / 2] + 1;
        if (i % 3 == 0 && dp[i]>dp[i / 3] + 1) dp[i] = dp[i / 3] + 1;
    }
    printf("%d", dp[n]);
    return 0;
}

댓글 없음 :

댓글 쓰기