Algorithm/Baekjoon
[Algorithm] Baekjoon 2293번 : 동전 1
MaxLevel
2023. 4. 23. 20:16
https://www.acmicpc.net/problem/2293
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
vector<int> coins;
int n, k, temp;
int dp[100001] = { 0 };
cin >> n >> k;
for (int i = 0; i < n; ++i)
{
cin >> temp;
coins.push_back(temp);
}
dp[0] = 1;
for (int i = 0; i < n; ++i) // 동전갯수.
{
// 동전단위 선택
for (int j = coins[i]; j <= k; ++j) // 선택된 동전단위부터 시작. 그것보다 아래면 쓸수조차없으니까.
{
dp[j] += dp[j - coins[i]];
}
}
cout << dp[k];
}
|
cs |
간단한 DP문제같은데 풀이를 봐도 쉽게 이해가 되지않았다가, 이제 좀 알것같은 문제.
일단 동전관련 문제는 되는대로 풀면서 내가 이해한 방식이 맞는지 확인해봐야 할 것 같다.