※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 33638번 문제인 Birthday Candles이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/33638
끌 수 있는 촛불의 개수의 형태는 일부는 몇몇 사람의 초는 $k$개를 끄고 나머지 사람의 초는
따라서, N명이 꽂은 초를 각각 그 사람이 꽂은 초 중 가장 비용이 적은 것을 골라 하나씩 끄는 것을 반복하는 것으로 문제를 쉽게 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
using namespace std;
int N, H, C, ans;
priority_queue<int, vector<int>, greater<>> pq[100], pqpq;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> H >> C;
for (int n = 0; n < N; n++) {
for (int h = 0; h < H; h++) {
int x; cin >> x;
pq[n].push(x);
}
}
for (int h = 0; h < H; h++) {
for (int n = 0; n < N; n++) pqpq.push(pq[n].top()), pq[n].pop();
while (!pqpq.empty() && pqpq.top() <= C) {
C -= pqpq.top();
pqpq.pop();
ans++;
}
if (!pqpq.empty()) break;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 29703 // C++] 펭귄의 하루 (0) | 2025.03.26 |
---|---|
[BOJ 33656 // C++] Island Exploration (0) | 2025.03.25 |
[BOJ 33646 // C++] Pencil Crayons (0) | 2025.03.20 |
[BOJ 33643 // C++] Keys, Phone, Wallet (0) | 2025.03.19 |
[BOJ 2450 // C++] 모양 정돈 (0) | 2025.03.18 |