[백준 BOJ 2294] 동전 2
2020. 2. 14. 01:29ㆍBOJ
반응형
백준 링크
https://www.acmicpc.net/problem/2294
풀이
- DP문제이다
- d[i] : i원을 만드는 최소 동전 개수
- 각 동전을 입력받을때마다 (현재 동전)<=j<=k에서 d[j] = min(d[j], d[j-a[i]] + 1) 으로 갱신한다
코드
#include<iostream>
#include<string.h>
using namespace std;
int n, k, a[105], d[200005];
const int MAX = 100005;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
for (int i = 0; i < 20005; i++) d[i] = MAX;
d[0] = 0;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> a[i];
for (int j = a[i]; j <= k; j++) {
if (d[j - a[i]] + 1 < d[j]) {
d[j] = d[j - a[i]] + 1;
}
}
}
if (d[k] == MAX) cout << -1;
else cout << d[k];
}
반응형
'BOJ' 카테고리의 다른 글
[백준 BOJ 10868] 최솟값 (0) | 2020.02.21 |
---|---|
[백준 BOJ 1766] 문제집 (0) | 2020.02.19 |
[백준 BOJ 1916] 최소비용 구하기 (0) | 2020.02.17 |
[백준 BOJ 9012] 괄호 (2) | 2020.02.14 |