Algorithm/BOJ

[백준 알고리즘/C++] 11047 동전 0

pinevienna 2021. 2. 20. 21:39

 

 

동전을 적절히 더하여 K로 만들 때 필요한 동전 개수의 최솟값을 구하는 문제

 

1원 ~ 50000원 동전을 적절히 더해서 4200을 만들면 되는데, 최소한의 동전만 써야 한다

 

1원짜리 4200개, 5원짜리 840개, 10원짜리 420개 ···

당연히 액수가 큰 동전을 많이 쓸수록 동전의 개수가 적어진다

 

내림차순으로 계산하면

50000 X, 10000 X, 5000 X, 1000원짜리 4개, 500 X, 100원짜리 2개

총 6개의 동전으로 4200을 만들 수 있다

 

 

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
#include <iostream>
#include <algorithm>
using namespace std;
 
int main(void) {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
 
    int n, k;
    int arr[11];
    
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
    }
 
    int temp, res = 0;
    temp = k;
    for (int i = n; i > 0; i--) {
        res += temp / arr[i];
        temp %= arr[i];
    }
 
    cout << res;
}
cs

 

n번째 동전부터 역순으로 계산해주면 됨