하루하나코딩
백준 2294 : 동전 2 c++
HAHAKO
2023. 1. 13. 09:47
코드
#include <iostream>
using namespace std;
bool compare(int a, int b){
return a > b;
}
int main(){
int n, k;
int price[101];
int dp[10001];
cin >> n >> k;
for(int i = 1; i <=k; i++){
dp[i] = 10001;
}
for(int i = 0; i < n; i++){
cin >> price[i];
for(int j = price[i]; j <= k; j++){
dp[j] = min(dp[j], dp[j-price[i]]+1);
}
}
if(dp[k]==10001) cout << -1;
else cout << dp[k];
return 0;
}
알게된점
2중반복문으로 구하는 dp는 생각하기 너무 어려운 것 같다.
다음에 한번 더 풀어보면서 복습해보아야겠다.
dp[j] = min(dp[j], dp[j-price[i]]+1); 이 수식을 생각하는게 참 어려운 것 같다.