반응형
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
그리디 문제다.
뺄 수 있는 최대한 큰 동전을 찾아서 그 동전을 사용 못할 때 까지 집는다.
만약 제일 작은 동전까지 반복했을 때 0이 되지 않았다면 전에 넣은 동전 하나 뺀다.
다시 반복
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <deque>
#include <unordered_set>
#include <cstring>
#include <utility>
#include <climits> // int32max
using namespace std;
int coinNum, target, res = 0, prevCoinIdx;
vector<int> coin;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> coinNum >> target;
for (int i = 0; i < coinNum; i++) {
int input;
cin >> input;
coin.push_back(input);
}
for (int i = coin.size() - 1; i >= 0; i--) {
if (target == 0)
break ;
if (target < coin[i])
continue ;
for (int j = 1; target >= coin[i]; j++) {
prevCoinIdx = i;
target -= coin[i];
res++;
}
if (i == 0 && target != 0) {
target += coin[prevCoinIdx];
i = prevCoinIdx - 1;
}
}
cout << res;
}
반응형
'<algorithm> > 백준' 카테고리의 다른 글
백준 1759 암호 만들기 c++ (0) | 2023.09.24 |
---|---|
백준 2195 문자열 복사 c++ (0) | 2023.09.23 |
백준 15686 치킨 배달 c++ (0) | 2023.09.22 |
백준 12100 2048(Easy) c++ (2) | 2023.09.21 |
백준 18808 스티커 붙이기 c++ (0) | 2023.09.21 |