-
백준 2293번: 동전 1다이나믹프로그래밍(DP) 2020. 11. 27. 13:49반응형
https://www.acmicpc.net/problem/2293
1. 문제
n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. (각각의 동전은 몇 개라도 사용할 수 있다.)
2. 알고리즘
키워드 - 다이나믹 프로그래밍
https://www.youtube.com/watch?v=2IkdAk1Loek
#include <iostream> #include <string> #include <vector> using namespace std; #include <iostream> #include <algorithm> // min #include <functional> #include <math.h> #include <string> #include <string.h> #include <vector> #include <map> #include <sstream> #define MAX_SIZE 100 int coin[MAX_SIZE]; int dp[10001]; int main() { std::ios::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; for (int i = 0; i < n; i++) { cin >> coin[i]; } dp[0] = 1; // n 동전의 갯수 for (int i = 0; i < n; i++) { // k = n 개의 동전으로 만들 수 있는 총 합 for (int j = coin[i]; j <= k; j++) { dp[j] += dp[j - coin[i]]; } } cout << dp[k] << "\n"; return 0; }
반응형'다이나믹프로그래밍(DP)' 카테고리의 다른 글
백준 12847번: 꿀 아르바이트 (0) 2020.11.27 백준 11053번: 가장 긴 증가하는 부분 수열 (10) 2020.11.26 백준 1932번: 정수 삼각형 (0) 2020.11.26 백준 2916번: 자와 각도기 (0) 2018.10.21 백준 14501번 : 퇴사 (0) 2018.08.12