[C] 백준 11256 사탕

https://www.acmicpc.net/problem/11256

문제

당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다.

당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰려고 한다. (박스를 다 채울 필요는 없다. 일부분만 채워도 된다.)

당신이 공장에서 나오는 사탕의 개수와 각 상자의 크기를 입력받고, 상자를 최소한으로 쓸 때의 사용되는 상자 개수를 출력하는 프로그램을 작성하라. 사탕들을 포장할 공간은 충분하다는 것이 보장된다.

제출 421 정답 비율 70%





코드

#include <stdio.h>
#include <stdlib.h>


void main() {

	int N = 0, J = 0;
	int sum = 0;
	scanf("%d %d", &J, &N);
	//사탕의 개수 J, 상자의 개수 N개(모두 크기 다름)

	int* r = malloc(N * sizeof(int));
	int* c = malloc(N * sizeof(int));
	int* box = malloc(N * sizeof(int));

	for (int i = 0; i < N; i++) {
		scanf("%d %d", &r[i], &c[i]);
		box[i] = r[i] * c[i];
	}
	//가로세로 입력하고 박스는 가로랑 세로 곱한 거. 


	int temp;
	for (int i = 0; i < N - 1; i++) {
		for (int j = i + 1; j < N; j++) {
			if (box[i] < box[j]) {
				temp = box[j];
				box[j] = box[i];
				box[i] = temp;
			}
		}
	}
	//box를 내림차순으로 정렬

	for (int i = N - 1; i >= 0; i--) {
		if (J - box[i] > 0) {
			J -= box[i];
			sum++;
		}
	}
	//박스 총 몇개 필요한지 count


	printf("%d", sum);

}

좋은 웹페이지 즐겨찾기