https://www.acmicpc.net/problem/2294
해결 방법 : 동적 계획법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <algorithm> using namespace std; int main(){ int dp[10001]={0}; int coin[101] = {0}; int N,k; cin >> N >> k; for(int i = 1; i <= N; i++) cin >> coin[i]; for(int i = 1; i <=k; i++) dp[i] = 10001; for(int i = 1; i <= N; i++){ for(int j = coin[i]; j <=k; j++) dp[j] = min(dp[j],dp[j-coin[i]] + 1); } dp[k] == 10001 ?cout << -1 : cout << dp[k]; } | cs |
반응형
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[bfs] 백준 1012 유기농 배추 (0) | 2018.11.11 |
---|---|
백준 3015 오아시스 재결합 (0) | 2018.11.10 |
백준 2293 (동전1) (0) | 2018.11.07 |
백준 2193 (이친수) (0) | 2018.11.06 |
백준 10844 (쉬운 계단 수) (0) | 2018.11.06 |