[BAE/<JOON> 문제풀이] 9084. 동전

폭풍저그머성찡 ㅣ 2020. 5. 30. 21:32

https://www.acmicpc.net/problem/9084

 

9084번: 동전

우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는

www.acmicpc.net

더보기
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int tc;
    cin >> tc;
    while (tc--) {
        int n, m;
        cin >> n;
        vector<int> coin;
        vector<vector<int>> dp;        
        coin.resize(n + 1);
        dp.resize(n + 1);
        
        for (int i = 1; i <= n; i++) {
            cin >> coin[i];
        }
        cin >> m;              
        for (int i = 0; i <= n; i++) {
            dp[i].resize(10001);
            dp[i][0] = 1;
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j < coin[i]; j++) {
                dp[i][j] = dp[i - 1][j];
            }
            for (int j = coin[i]; j <= m; j++) {
                dp[i][j] = dp[i][j - coin[i]] + dp[i - 1][j];
            }
        }
        /*for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                cout << dp[i][j] << " ";
            }
            cout << "\n";
        }*/
        cout << dp[n][m] << "\n";
    }
    return 0;
}