코드
#include <iostream>
using namespace std;
int coin[101];
int dp[10001];
int main(){
int n, k;
cin >> n >> k;
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++){
dp[j] += dp[j - coin[i]];
}
}
cout << dp[k] << "\n";
return 0;
}
알게된 점
경우의수를 구하는 문제를 점화식으로 나타내는게 조금 어려운 것 같다.
구글링을 통해 풀었지만, 조금 더 많이 생각해 봐야겠다.
그리고 전역변수와 지역변수의 차이가 있다.
'하루하나코딩' 카테고리의 다른 글
백준 2294 : 동전 2 c++ (0) | 2023.01.13 |
---|---|
백준 9461 : 파도반 수열 c++ (0) | 2023.01.12 |
백준 9465 : 스티커 c++ (0) | 2023.01.10 |
백준 2579 : 계단 오르기 c++ (0) | 2023.01.06 |
백준 5014번 : 스타트링크 c++ (0) | 2023.01.05 |