🖥️ CS/Baekjoon Algorithms

#11047번 동전 0 (C++)

한국의 메타몽 2020. 10. 28. 15:16

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

문제의 핵심은 '그리디 기법'으로, 가장 가능성이 높은 지점을 선택하면 된다. 

이 문제는 대상이 '동전'이며, 모든 동전이 5의 배수로 떨어져 오름차순으로 배열되서 제공되기 때문에 

어려움 없이 풀 수 있었다. 

 

핵심은 원하는 값 보다 크지 않은 값을 채택하면 된다는 점이다.

 

#include <iostream>

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int n = 0, k = 0, arr[11], total = 0;
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	while (n > 0&&k!=0) {
		if (k >= arr[n]) {
			k -= arr[n];
			total++;
		}
		else n--;
	}
	cout << total << "\n";

	return 0;
}

 

'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글

#11399번 ATM (C++)  (0) 2020.10.30
#1931번 회의실배정 (C++)  (0) 2020.10.30
#2583번 영역구하기 (C++)  (0) 2020.10.20
#1912번 연속합 (C++)  (0) 2020.10.20
#11053번 가장 긴 증가하는 부분 수열 (C++)  (0) 2020.10.20