본문 바로가기
알고리즘

[BOJ/백준] 11047번 - 동전 0

by lewns2 2021. 6. 25.

단계별로 풀어보기 > 그리디 알고리즘 > [1단계] 11047번

 

문제 링크 : 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

 

문제 요약

1. 그리디 알고리즘을 사용하는 대표적인 동전 문제

 

입력 복사

예제 입력 1 >> 출력 : 6

10 4200
1
5
10
50
100
500
1000
5000
10000
50000

예제 입력 2 >> 출력 : 12

10 4790
1
5
10
50
100
500
1000
5000
10000
50000

 

CODE

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n,k;
	cin >> n >> k;
	
	vector<int> v(n);

	for(int i =0; i<n; i++) {
		cin >> v[i];		
	}
	int cnt = 0;
	for(int i = n-1; i >= 0; i--) {
		cnt = cnt + k / v[i];
		k = k % v[i];
		
		if(k==0) break;	
	}
	cout << cnt << endl;
}

 

문제 풀이

- 화폐 가치가 큰 동전부터 차례로 선택하는 대표적인 그리디 알고리즘 풀이 문제.

- 복잡하게 생각해, 구태여 조건을 덧붙일 필요가 없었다...

 

참고 URL : https://salon.tistory.com/50

 

[C++][Competitive Programmer's Handbook] 그리디 알고리즘(1) - 동전 문제와 주의 사항

본 게시글은 "Competitive Programmer's Handbook"을 보며 임의로 해석하며 공부한 내용입니다. Greedy algorithms 그리디 알고리즘은 항상 그 순간에 가장 좋아보이는 선택을 함으로서 문제에 대한 해결책을

salon.tistory.com

 

728x90
반응형