백준(C언어) 풀이/그리디(Greedy) 알고리즘

백준(C) 11047번 동전 0 풀이

개발윗미 2021. 8. 3. 17:19

C로 구현한 11047번 동전 0 구하기 문제 풀이입니다.

 

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 <stdio.h>

int main() {
	int n, k, result=0;
	int stat[11];
	scanf("%d %d", &n, &k);
	for(int i=n-1; i>=0; i--) {
		scanf("%d", &stat[i]);
	}
	
	for(int i=0; i<n; i++) {
		result += k / stat[i];
		k %= stat[i];
	}
	printf("%d", result);
}

 

문제에서 준규가 가지고 있는 동전은 총 N종류이며 첫째 줄에 N을 입력받는다. 또, 둘째 줄부터는 N개의 줄에

 

동전의 가치가 오름차순으로 주어지기 때문에 오름차순으로 입력을 받아 배열 stat에 거꾸로 넣어 stat 배열에서는

 

각 인덱스 값이 내림차순 형태가 되도록 한다. 

 

두번째 반복문에서는 동전 가치의 합이 주어져 있고, 문제에서는 필요한 동전 개수의 최솟값을 요구하기 때문에

 

stat의 인덱스 값을 0부터 n까지 1씩 증가시키면서 가치의 합(k)에 해당 인덱스 값을 나눈 몫을 누적시켜 나간다.