본문 바로가기
알고리즘

[BOJ/백준] 2293번 - 동전 1

by lewns2 2021. 7. 21.

 

동전 1

 

문제

https://www.acmicpc.net/problem/2293

 

2293번: 동전 1

첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

문제 요약

주어진 동전들을 통해 목표합을 만드는 경우의 수를 구한다.

  • 동전의 중복 사용을 허용
  • 중요! 동전 순서가 다르면, 같은 경우로 인정

 

!! 아래 문제와 유사해 보이지만, 조건이 다르다.

https://salon.tistory.com/60?category=1191940

 

[Dynamic progamming] Coin Combinations I

Coin Combinations I 문제 https://cses.fi/problemset/task/1635/ CSES - Coin Combinations I cses.fi 문제 요약 주어진 동전들을 통해 목표합을 만드는 경우의 수를 구한다. 동전의 중복 사용을 허용 중요! 동..

salon.tistory.com

 

CODE

#include <bits/stdc++.h>
using namespace std;

const int mxN=100, mxK=1e5; 
int n, k, c[mxN+1];
int dp[mxK+1];

int main() {
	cin >> n >> k;
	for(int i=0; i<n; i++) {
		cin >> c[i];
	}
	
	dp[0]=1;
	for(int j=0; j<n; j++ ) {
		for(int i=1; i<=k; i++) {		
			if(i>=c[j]) {
				dp[i] = dp[i] + dp[i-c[j]];
			}
		}
	}
	cout << dp[k]; 
}

 

점화식

if(i>=c[j]) {
	dp[i] = dp[i] + dp[i-c[j]];
}

 

간단 풀이

 

> 해당 문제에서 for의 순서만 바꾸면 된다.

 

 

 

 

728x90
반응형

'알고리즘' 카테고리의 다른 글

[C++] set::lower_bound() 함수  (0) 2021.07.25
[BOJ/백준] 11053번 - 가장 긴 증가하는 부분 수열  (0) 2021.07.21
[CSES] Coin Combinations I  (0) 2021.07.21
[CSES] Minimizing Coins  (0) 2021.07.21
[C++] 그래프 표현  (0) 2021.07.19