본문 바로가기

algorithm/Greedy

[C++] BOJ 11047 동전 0

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

코드

#include<iostream>

using namespace std;
int n, k, cnt = 0;
int val[11];
int main() {
	cin >> n >> k;
	for (int i = 0; i < n; i++)cin >> val[i];
	while (k > 0) {
		for (int i = n - 1; i >= 0; i--) {
			if (k >= val[i]) {
				cnt += k / val[i];
				k %= val[i];
			}
		}
	}
	cout << cnt;
}

풀이방법

큰 금액의 동전부터 사용해서 해당 금액을 지불하는데 필요한 동전의 개수를 센다.

고민과정

각 동전의 값을 어떤 형태로 저장할지 약간 고민했지만, 이미 크기순으로 주어졌기 때문에 배열로 받는 것이 제일 낫다고 판단했다.

'algorithm > Greedy' 카테고리의 다른 글

[C++] BOJ 15889 호 안에 수류탄이야!!  (0) 2022.01.12
[C++] BOJ 1715 카드 정렬하기  (0) 2021.11.16
[C++] BOJ 12782 비트 우정지수  (0) 2021.03.27
[C++] BOJ 11256 사탕  (0) 2021.03.26
Greedy (탐욕) 알고리즘  (0) 2021.03.26