티스토리 뷰

lecture/algorithm - c++

[c++] 동전교환

tonirr 2021. 2. 18. 06:34

동전교환

#include<bits/stdc++.h>
using namespace std;
int main() {
	ios_base::sync_with_stdio(false);
	//freopen("input.txt", "rt", stdin);
	int n, l, w, v, coin[13];
	vector<int> k(l+1, 0);
	cin >> n;
	for(int i=0; i<n; i++){
		cin >> coin[i];
	}
	cin >> l;
	vector<int> dy(l+1, 1000);
	dy[0]=0;
	for(int i=0; i<n; i++){
		for(int j=coin[i]; j<=l; j++){
			dy[j] = min(dy[j], dy[j-coin[i]]+1);
		}
	}
	cout<< dy[l];
	return 0;
}

냅색 알고리즘을 사용한 문제이다.

항상 동적계획법을 사용한 문제들은 다이나믹 배열에 어떤 것들을 받아야 하는지 살펴보아야 한다.

출력하는 값이 다이나믹 배열에 오게하면 된다.

거슬러줄 금액이 1원 일 때 동전의 최소개수

거슬러줄 금액이 2원 일 때 동전의 최소개수

거슬러줄 금액이 3원 일 때 동전의 최소개수를 차례대로 동전의 종류별로 구한 후 

종류별 동전의 최소개수를 살피면서 이전에 다이나믹 배열에 들어있는 값과 비교하여 작은 값을 다이나믹 배열에 갱신해준다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함