Published 2020. 12. 29. 01:45
 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

#include <iostream>
using namespace std;
int d[1000001];
int main() {
    int n;
    cin >> n;
    d[1] = 0;
    for (int i=2; i<=n; i++) {
        d[i] = d[i-1] + 1;
        if (i%2 == 0 && d[i] > d[i/2] + 1) {
            d[i] = d[i/2] + 1;
        }
        if (i%3 == 0 && d[i] > d[i/3] + 1) {
            d[i] = d[i/3] + 1;
        }
    }
    cout << d[n] << '\n';
    return 0;
}

'Problem set' 카테고리의 다른 글

[백준] 1874: 스택 수열  (0) 2020.12.29
[백준] 1676: 팩토리얼 0의 개수  (0) 2020.12.29
[백준] 1406: 에디터  (0) 2020.12.29
[백준] 1373: 2진수 8진수  (0) 2020.12.29
[백준] 1212: 8진수 2진수  (0) 2020.12.29
복사했습니다!