알고리즘 관련/BOJ
2294 동전 2
Andrew-Yun
2020. 12. 17. 17:05
동전 1과 유사한 문제이다.
동전의 최소 개수에 유의하여 풀면 쉬운 문제이다.
위의 예제에서 알 수 있듯이 문제가 분할이 가능하기 때문에 DP로 풀 수 있다.
정답코드
더보기
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, K;
int dp[10001];
int main()
{
fill(&dp[0], &dp[10001], 987654321);
cin >> N >> K;
vector<int> coins(N, 0);
dp[0] = 0;
for (int i = 0; i < N; i++)cin >> coins[i];
for (int n = 0; n < N; n++) {
for (int k = coins[n]; k <= K; k++) {
dp[k] = min(dp[k], dp[k - coins[n]] + 1);
}
}
if (dp[K] == 987654321)
printf("-1\n");
else
printf("%d\n", dp[K]);
return 0;
}