https://www.acmicpc.net/problem/2294
더보기
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
vector<int> coin;
vector<int> dp;
coin.resize(n + 1);
dp.resize(k + 1);
for (int i = 1; i <= n; i++) {
cin >> coin[i];
}
for (int i = 1; i <= k; i++) {
dp[i] = 10000005;
}
dp[0] = 0;
for (int i = 1; i <= n; i++) {
for (int j = coin[i]; j <= k; j++) {
if (dp[j] > dp[j - coin[i]] + 1) {
dp[j] = dp[j - coin[i]] + 1;
}
}
}
/*for (auto d : dp) {
cout << d << " ";
}
cout << endl;*/
if (dp[k] == 10000005) {
cout << -1;
return 0;
}
cout << dp[k];
return 0;
}
'Algorithm > Algorithm 문제 풀이' 카테고리의 다른 글
[BAE/<JOON> 문제풀이] 이항계수 2 (DP.026) (0) | 2020.05.03 |
---|---|
[BAE/<JOON> 문제풀이] 2167. 배열의 합 (DP.025) (0) | 2020.05.02 |
[BAE/<JOON> 문제풀이] 9251. LCS (DP.022) (0) | 2020.05.02 |
[BAE/<JOON> 문제풀이] 11055. 가장 큰 증가 부분 수열 (DP.021) (0) | 2020.05.01 |
[BAE/<JOON> 문제풀이] 1699. 제곱수의 합 (DP.020) (0) | 2020.04.30 |