본문 바로가기
문제 해결/BaekJoon

[백준] [C++] 11047번 동전 0

by WSLim_97 2023. 1. 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


코드

#include <iostream>
using namespace std;

const int COUNT = 10;

int main()
{
	int arr[COUNT] = { };
	int n, k, input, cnt = 0;
	cin >> n >> k;

	for (int i = 0; i < n; i++)
	{
		cin >> input;
		arr[i] = input;
	}
	
	for (int i = COUNT - 1; i >= 0; i--)
	{
		if (arr[i] > 0)
		{
			cnt += k / arr[i];
			k %= arr[i];
		}
	}

	cout << cnt;

	return 0;
}

풀이

자연수 k가 주어졌을 때 10개의 동전을 사용해 k를 만들 수 있는 동전 개수의 최솟값을 구해 출력하는 문제이다.

 

사용한 동전의 개수는 cnt 변수에 저장하였고 k를 동전의 액면가로 나눈 몫을 사용했다. k를 동전의 액면가로 나눈 나머지를 다시 k에 저장한다.

 

추가로 0으로 나누는 오류가 나타나지 않게 하기 위해 분모가 0보다 클 때만 동작하도록 하였다.

 

처음에는 while 반복문을 사용해 cnt 값을 구했더니 시간 초과가 떠서 아래 블로그를 참고했다.

 

 

참고: https://blog.naver.com/occidere/220802824513

 

[백준] 11047 - 동전 0

문제 링크 : https://www.acmicpc.net/problem/11047 이 문제는 여태까지 풀었던 동전 시리즈와 비슷...

blog.naver.com

반응형