Game Develop

[Algorithm] Baekjoon 2293번 : 동전 1 본문

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문제같은데 풀이를 봐도 쉽게 이해가 되지않았다가, 이제 좀 알것같은 문제.

일단 동전관련 문제는 되는대로 풀면서 내가 이해한 방식이 맞는지 확인해봐야 할 것 같다.