2293번

· 백준
코드#include using namespace std;int n,k,a[103], dp[10003];int main() { cin >> n >> k; dp[0] = 1; // 0원을 만드는 경우의 수는 1 for(int i = 0; i > a[i]; for(int i = 0; i 풀이j가 a[i] 이상이어야 a[i]원부터 시작해서 k까지의 값을 대상으로 할 수 있다. dp[j]는 j원을 만들 수 있는 경우의 수를 의미한다. 그리고 dp[j - a[i]]는 j - a[i]원을 만드는 경우의 수를 의미한다. 만약 j - a[i]를 만들 수 있다면 a[i]원 동전을 이용해서 j를 만들 수 있다. 따라서 j원을 만드는 경우의 수에 j - a[i]원을 만들 수 있는 경우의 수를 더해준다.