그럴듯한 개발 블로그
Published 2023. 9. 23. 14:31
백준 11047 동전 0 c++ <algorithm>/백준
반응형

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
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!