Tech/Algorithm

[BOJ] 백준 9084 동전 c++ (DP)

0m1n 2021. 12. 28. 19:03
728x90
반응형

문제 출처 : https://www.acmicpc.net/problem/9084

 

9084번: 동전

우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는

www.acmicpc.net

풀이

DP로 해결하였던 문제이다.

 

동전의 종류가 주어지고 주어진 금액을 만드는 모든 경우의 수를 세는 문제이다.


점화식은 다음과 같다.

for(int i = 0; i < N; i++)
	for(int j = coin[i]; j <= target; j++)
		dp[j] += dp[j - coin[i]];

 


 

#include <iostream>
#include <vector>

using namespace std;

int main(){	
	ios::sync_with_stdio(false); cin.tie(NULL);

	int T;
	cin >> T;
	while (T--){
		int dp[10000 + 1] = {0, };

		int N;
		cin >> N;
		vector<int> coin(N);
		int target;

		for(int i = 0; i < N; i++){
			cin >> coin[i];
		}

		cin >> target;

		dp[0] = 1;
		for(int i = 0; i < N; i++)
			for(int j = coin[i]; j <= target; j++)
				dp[j] += dp[j - coin[i]];

		cout << dp[target] << '\n';
	}	

	return 0;
}

 

728x90
반응형