https://www.acmicpc.net/problem/11256
11256번: 사탕
당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰
www.acmicpc.net
1. 문제풀이
그리디 알고리즘을 이용한 문제로, 상자를 최소한으로 사용하기 위해서 크기가 큰 상자부터 사탕을 담으면 된다. 입력받은 상자의 정보를 바탕으로 상자의 크기를 우선순위 큐에 저장하고, 사탕의 개수가 0이하가 될 때까지 반복문을 돌면서 우선순위가 높은 원소를 꺼내면서 상자의 개수를 1씩 증가시킨다.
2. C++ 코드
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int t, j, n, r, c, cnt;
scanf("%d", &t);
while (t--) {
priority_queue<int> pq;
cnt = 0;
scanf("%d %d", &j, &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &r, &c);
pq.push(r * c);
}
while (!pq.empty()) {
j -= pq.top();
pq.pop();
cnt++;
if (j <= 0) {
break;
}
}
printf("%d\n", cnt);
}
return 0;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] 20937번: 떡국 (0) | 2023.09.03 |
---|---|
[백준 / C++] 2872번 우리집엔 도서관이 있어 (0) | 2023.09.03 |
[백준/C++] 19941번: 햄버거 분배 (0) | 2023.09.03 |
[백준/C] 20937번 떡국 (0) | 2023.09.03 |
[백준/Python] 19941번: 햄버거 분배 (0) | 2023.09.03 |