728x90
반응형
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> arr;
int main(void) {
cin >> n >> m;
// n개의 화폐 단위정보 입력받기
for(int i=0; i<n; i++){
int x;
cin >> x;
arr.push_back(x);
}
vector<int> d(m+1, 10001); //DP테이블 초기화
d[0] = 0;
for(int i=0; i<n; i++){
for(int j = arr[i]; j<=n; j++){
if(d[j-arr[i]] != 10001){// (i-k)원을 만드는 방법이 존재하는 경우
d[j] = min(d[j], d[j - arr[i]]+1);
}
}
}
if(d[n] == 10001) cout << -1 << endl;
else cout << d[m] << endl;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[이코테/DP/C++] 병사 배치하기 (최장 증가 부분 수열 알고리즘, LIS) (1) | 2022.12.14 |
---|---|
[이코테/DP/C++] 금광 (0) | 2022.12.13 |
[이코테/DP/C++] 1로 만들기 (0) | 2022.12.01 |
[이코테/DP/C++] 개미 전사 (0) | 2022.12.01 |
[ 백준/그리디/C++] 11399번 ATM (0) | 2022.09.29 |