※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 9784번 문제인 Boiled Eggs이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/9784
9784번: Boiled Eggs
You want to boil eggs for breakfast. You have n eggs and a pot. It takes 15 minutes to boil a pot of eggs (no matter the number of eggs). It is risky to put more than P eggs in the pot and the pot can carry at most Q grams of eggs. Now you are given the we
www.acmicpc.net
냄비에 Q 그램 이하의 달걀을 담으면서 가장 많은 개수의 달걀을 담기 위한 전략으로 가지고 있는 달걀 중 가장 가벼운 달걀서부터 차례로 넣는 것을 시도하는 것이 있다. 이를 구현해 문제를 해결하자.
달걀의 무게를 오름차순으로 접근하기 위해 달걀의 무게를 저장한 배열을 정렬해 문제를 해결하자. N의 크기가 작으므로 어느 정도 비효율적인 정렬 방법을 사용해도 좋을 것이다. 글쓴이는 algorithm헤더의 sort를 이용하였다.
냄비에 담을 수 있는 달걀의 개수의 상한선이 P이므로 위에서 구한 값과 P 중 더 작은값을 출력해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <algorithm>
using namespace std;
int T;
int N, P, Q;
int arr[30];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
for (int t = 1; t <= T; t++) {
cin >> N >> P >> Q;
for (int i = 0; i < N; i++) cin >> arr[i];
sort(arr, arr + N);
int psum = 0, cnt = N;
for (int i = 0; i < N; i++) {
if (psum + arr[i] > Q) {
cnt = i;
break;
}
else psum += arr[i];
}
cout << "Case " << t << ": " << min(cnt, P) << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 2704 // C++] 이진법 시계 (0) | 2023.02.21 |
---|---|
[BOJ 25275 // C++] Bar Classification (1) | 2023.02.20 |
[BOJ 11605 // C++] Magic Trick (0) | 2023.02.20 |
[BOJ 27467 // C++] 수학 퀴즈 (0) | 2023.02.20 |
[BOJ 1802 // C++] 종이 접기 (0) | 2023.02.19 |