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