teddy8 Full Stack Software Engineer

[BaekJoon][Greedy] 11047. 동전 0

2019-06-26
teddy8

문제

URL : https://www.acmicpc.net/problem/tag/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98


소스코드

/* 문제 : [11047] 동전 0
[input]
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
[output]
6
[설명]
첫째 줄에 동전의 종류 N과 K원이 주어진다.
둘째 줄부터 동전의 가치가 오름차순으로 주어진다.
이 때, K원을 만드는데 필요한 동전 개수의 최소값 출력해라
*/
#include <iostream>
#include <list>

using namespace std;

int main()
{
	list<int> coinList; // 동전의 가치를 저장할 리스트 
	int n, k;			// 동전의 종류, 만들어야 될 K원
	int count = 0;		// 필요한 동전의 개수

	cin >> n >> k;
	
	for (int i = 0, s; i < n; i++) {
		cin >> s;
		coinList.push_back(s);
	}

	coinList.reverse(); // 큰 것부터 나누기 위해 오름차순 정렬
	list<int>::iterator iter = coinList.begin();

	while (iter != coinList.end()) {
		if (k >= *iter) {
			count += k / *iter;
			k %= *iter;
		}
		
		iter++;
	}

	cout << count;
	return 0;
}


Comments

Content