View

반응형

 

알고리즘 분류: 그리디 알고리즘

문제 링크: https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

 

【 풀이 】

 

그리디 알고리즘을 활용하는 그리디 기초 문제이다.

동전 거스름돈은 항상 가장 큰 금액의 동전부터 거슬러 주는 것이 최적해이기 때문에

n개의 동전들을 배열에 저장해 주고 배열의 맨 뒤에서부터 계산해 주면 된다.

 

 

【 코드 】

#include<iostream>
using namespace std;

int a[1000001];
int main(void)
{
	int cnt = 0;
	int n, k;
	cin >> n >> k;

	for (int i = 0; i < n; i++)
		cin >> a[i];

	for (int i = n - 1; i >= 0; i--)
	{
		if (k % a[i] != k)
		{
			cnt += k / a[i];
			k %= a[i];
		}
	}
	cout << cnt;
	return 0;
}

 

728x90
반응형
Share Link
reply
250x250
반응형
«   2024/10   »
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