[문제 위치]
https://www.acmicpc.net/problem/3067
[문제 풀이]
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T; // 테스트 케이스의 수
cin >> T;
while (T--) {
int N; // 동전의 가지 수
cin >> N;
vector<int> coins(N);
for (int i = 0; i < N; ++i) {
cin >> coins[i];
}
int M; // 만들어야 할 금액
cin >> M;
vector<int> dp(M + 1, 0);
dp[0] = 1; // 0원을 만드는 방법은 1가지 (아무것도 사용하지 않는 것)
for (int coin : coins) {
for (int amount = coin; amount <= M; ++amount) {
dp[amount] += dp[amount - coin];
}
}
cout << dp[M] << endl; // M원을 만드는 모든 방법의 수
}
return 0;
}
'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글
[Gold IV] 3584번 - 가장 가까운 공통 조상 (0) | 2024.08.01 |
---|---|
문제: [Silver V] 22232번 - 가희와 파일 탐색기 (0) | 2024.08.01 |
[Bronze V] 27323번 - 직사각형 (0) | 2024.07.20 |
[Silver V] 10384번 - 팬그램 (1) | 2024.07.20 |
[Gold IV] 1027번 - 고층 건물 (1) | 2024.07.20 |