본문 바로가기

Dev/BAEKJOON 백준

[백준/BOJ] 백준 코딩 알고리즘 1463번/C++

728x90
반응형

백준 코딩 알고리즘 문제 1463

 

백준 코딩 알고리즘 문제 1463번 풀이 - 사용 언어: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <algorithm>
#define MAX 1000000
 
using namespace std;
 
int operNum[MAX + 1];
 
int main() {
 
    int X;
    cin >> X;
 
    operNum[0= 0;
    operNum[1= 0;
    operNum[2= 1;
    operNum[3= 1;
 
 
    //연산 횟수를 저장하는 배열을 최대 크기까지 채운다
    for (int i = 4; i <= MAX; i++) {
        //각 수가 조건에 맞는 가능한 연산에 따라서 배열의 값(연산의 횟수)를 채운다
        if (i % 2 == 0 && i % 3 == 0) {
            operNum[i] = min(1 + operNum[i - 1], min(1 + operNum[i / 2], 1 + operNum[i / 3]));
        }
        else if (i % 2 == 0) {
            operNum[i] = min(1 + operNum[i / 2], 1 + operNum[i - 1]);
        }
        else if (i % 3 == 0) {
            operNum[i] = min(1 + operNum[i / 3], 1 + operNum[i - 1]);
        }
        else {
            operNum[i] = 1 + operNum[i - 1];
        }
    }
 
    cout << operNum[X] << endl;
 
    return 0;
 
}
cs
728x90
반응형