코딩 인터뷰/Dynamic Programming
동전 2 - 2294번 백준
fataliteforu
2023. 10. 12. 22:36
문제
문제 난이도 : 골드 5
문제 분류 : 다이나믹 프로그래밍
문제 리뷰
DP는 어렵다.,..
문제 소스 코드
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
#include <unordered_set>
#include <memory.h>
using namespace std;
void Init()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
std::cout.tie(NULL);
}
int Coin[101];
int DP[100001];
int main()
{
Init();
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> Coin[i];
}
for (int i = 0; i < 100001; i++) {
DP[i] = 999999;
}
DP[0] = 0;
for (int i = 0; i < n; i++) {
for (int j = Coin[i]; j <= k; j++) {
DP[j] = min(DP[j - Coin[i]] + 1, DP[j]);
}
}
if (DP[k] == 999999) {
cout << -1;
}
else {
cout << DP[k] << endl;
}
}