문제 : 백준 2293 동전 1 👛
난이도 : 골드 5
1️⃣ n가지 서로 다른 종류의 동전이 있다.
2️⃣ 이 동전을 사용하여 그 가치의 합이 k원이 되도록 하는 경우의 수를 구해야 한다.
점화식을 구하다가, 계속 에러가 나와서 다른 사람들의 풀이를 참고했다 😿
참고 자료 : https://bitwise.tistory.com/504
점화식 : dp[j]는 하나의 행을 의미한다. coin[i]는 동전의 종류를 의미한다.
dp[j] = dp[j - coin[i]] + dp[j]
#include <iostream>
using namespace std;
int main() {
std::ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n, k;
cin >> n >> k;
int coin[100];
int dp[10001] ={0,};
for (int i = 0; i < n; i++) {
cin >> coin[i]; //동전의 종류를 입력받는다.
}
dp[0] = 1;
for (int i = 0; i < n; i++) {
for (int j = coin[i]; j <= k; j++) {
//coin[i]전까지는 이전 값과 동일하므로 coin[i]부터 시작한다.
dp[j] += dp[j - coin[i]]; //점화식
}
}
cout << dp[k] << "\n";
return 0;
}