반응형
https://www.acmicpc.net/problem/2293
2293번: 동전 1
첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.
www.acmicpc.net
- 문제
동전의 값이 n개 주어지면 이 동전들을 이용해서 k원을 만들 수 있는 경우의 수를 구하는 문제다(중복없이).
- 해설
이건 나도 혼자서 못 풀어서 다른 사람 풀이를 보고 참고했다.
1, 2, 5원이 있다고 할 때 dp라는 배열에 1을 이용했을 때 만들 수 있는 경우의 수를 저장하고
그 다음 반복문에서 2도 함께 사용했을 때, 즉 1과 2를 사용했을 때 만들 수 있는 경우의수를 더한다.
마지막 5도 마찬가지로 반복해서 풀었다.
다른 사람 블로그를 이렇게 가져와도 되는 지 모르겠지만,
https://danidani-de.tistory.com/5
여기 내용을 많이 참고했다.
- 풀이
#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, k, temp;
cin >> N >> k;
vector<int> coins(N);
vector<int> dp(k + 1);
for (int i = 0; i < N; i++)
{
cin >> coins[i];
}
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];
return 0;
}
- 새롭게 알게 된 점
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준][C++] 1520: 내리막 길 (0) | 2022.12.30 |
---|---|
[백준][C++] 1063: 킹 (1) | 2022.12.27 |
[백준][C++] 23757: 아이들과 선물 상자 (0) | 2022.12.13 |
[백준][C++] 11286: 절대값 힙 (0) | 2022.12.09 |
[백준][C++] 11401: 이항 계수 3 (0) | 2022.12.08 |