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
i + 1번째 동전의 가치가 I번째 동전의 가치의 배수이므로, 가치가 가장 큰 동전부터 차례로 사용해 값 K를 만들면 동전의 개수를 최소화할 수 있다.
#include <cstdio>
#define MAX_N 10
int main() {
// N: 동전의 개수, K: 만들고자 하는 값, A[i]: i번째 동전의 가치
// ans: 주어진 동전으로 K를 만들 때 사용된 동전의 개수
int N, K, A[MAX_N] = { 0, }, ans = 0;
// 문제의 조건을 입력받은 뒤
scanf("%d %d", &N, &K);
for (int i = 0; i < N; i++) scanf("%d", A + i);
// 가장 큰 동전부터 K를 최소화하는 만큼의 동전을 사용
while (N--) {
ans += K / A[N];
K %= A[N];
}
// 동전이 사용된 개수를 출력
printf("%d\n", ans);
return 0;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
11051번: 이항 계수 2 (0) | 2022.01.04 |
---|---|
11050번: 이항 계수 1 (0) | 2022.01.04 |
11022번: A+B - 8 (0) | 2022.01.03 |
11021번: A+B - 7 (0) | 2022.01.03 |
10998번: A×B (0) | 2022.01.03 |