동전 0
17 August 2019
문제 : https://www.acmicpc.net/problem/11047
이번은 동전의 조건이 특별해서 동적 프로그래밍보다 빠르게 답을 찾을 수 있는 문제를 풀어보도록 하겠습니다.
#include<stdio.h>
static int* arr;
int main(void) {
int N, TOTAL;
scanf("%d %d", &N, &TOTAL);
arr = new int[N];
for (int i = 0; i < N; i++)
{
scanf("%d", &arr[i]);
}
int count = 0;
for (int i = N - 1; i >= 0; i--)
{
while (TOTAL >= arr[i])
{
TOTAL -= arr[i];
count++;
}
if (TOTAL == 0)
{
break;
}
}
printf("%d", count);
return 0;
}
동전의 값이 오름차순으로 주어지고, 동전의 갯수가 제한이 없으므로 큰 동전으로 해당 값을 만들수록 동전을 사용하는 횟수가 줄어듭니다.따라서 큰 동전부터 차례로 해당 값을 만들고, 전체 count를 return 해주도록 합니다.