본문 바로가기
Algorithm/BOJ

[BOJ] 11047번: 동전 0 (c++)

by HBGB 2020. 6. 17.

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

 

K에서 뺄수 있는 가장 큰 액수의 동전을 최대로 뺀다.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	// 입력
	int N, K;
	cin >> N >> K;
	vector<int> coins(N);
	for (int i = 0; i < N; ++i)
	{
		cin >> coins[i];
	}

	// K보다 작은 최대 액수의 동전을 가장 많이 써나간다.  
	int cnt = 0;
	for (int i = N - 1; i >= 0; --i)
	{
		// cnt += i번째 동전을 최대로 쓸수 있는 개수
		cnt += K / coins[i];
		
		// K -= i번째 동전을 최대로 쓴 금액
		K %= coins[i];
	}

	cout << cnt;

	return 0;
}

 

 

가능한 가장 큰 동전부터 K에서 빼야 하므로,

반복문을 벡터 뒤쪽부터 돌린다.

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]11399번: ATM (c++)  (0) 2020.06.20
[BOJ]1931번: 회의실배정 (c++)  (0) 2020.06.20
[BOJ]14395번: 4연산 (c++)  (0) 2020.06.17
[BOJ]10026번: 적록색약 (c++)  (0) 2020.06.17
[BOJ]1963번: 소수 경로 (c++)  (0) 2020.06.17

댓글