[문제 위치]
https://www.acmicpc.net/problem/9084
[문제 풀이]
DP 문제이다. 여러 번 반복해서 다른 상황에 대한 DP를 구성해주어야 한다. 그 점을 주의하여 테스트 케이스마다 DP 리스트와 동전의 값을 저장하는 배열을 초기화 해주면 특별할 것은 없다.
#include <iostream>
#include <vector>
#include <algorithm>
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
int main() {
fastio;
int T;
cin >> T;
while (T--) {
vector<int> coin_values;
int DP[10001] = { 0 };
DP[0] = 1; // 금액 0을 만드는 방법은 1가지
int N;
cin >> N;
for (int j = 0; j < N; j++) {
int tmp;
cin >> tmp;
coin_values.push_back(tmp);
}
int goal;
cin >> goal;
for (int coin : coin_values) {
for (int amount = coin; amount <= goal; amount++) {
DP[amount] += DP[amount - coin];
}
}
cout << DP[goal] << endl;
}
return 0;
}
'문제 풀이 > 문제 풀이(BOJ)' 카테고리의 다른 글
[Gold V] 1학년 - 5557 (0) | 2024.07.06 |
---|---|
[Gold V] 퇴사 2 - 15486 (1) | 2024.07.05 |
[Gold V] 컨베이어 벨트 위의 로봇 - 20055 (0) | 2024.07.04 |
[Gold V] 암호코드 - 2011 (0) | 2024.07.04 |
[Gold V] 신기한 소수 - 2023 (1) | 2024.07.03 |