반응형
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
반응형
'문제 해결 > BaekJoon' 카테고리의 다른 글
[백준] [C++] 2902번 KMP는 왜 KMP일까? (0) | 2023.01.17 |
---|---|
[백준] [C++] 10953번 A + B - 6 (0) | 2023.01.17 |
[백준] [C++] 5576번 콘테스트 (0) | 2023.01.13 |
[백준] [C++] 10870번 피보나치 수 5 (0) | 2023.01.13 |
[백준] [C++] 5800번 성적 통계 (0) | 2023.01.13 |