[백준] Baekjoon Online Judge
문제
알렉스는 이삿짐센터를 운영하고 있다. 오늘 이사해야 하는 집에는 무게가 1kg인 물건이 A개, 2kg인 물건이 B개, 3kg인 물건이 C개, 4kg인 물건이 D개, 5kg인 물건이 E개 있다.
물건을 운반하려면 바구니에 물건을 담아야 하는데, 바구니에는 최대 5kg까지 물건을 담을 수 있다. 알렉스는 모든 물건을 담는데 필요한 바구니 개수를 최소로 하려고 한다.
가방 하나에 담은 물건 무게의 합은 5kg을 넘을 수 없다.
물건의 무게가 주어졌을 때, 모든 물건을 담는데 필요한 바구니 개수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A, B, C, D, E가 주어진다. (0 ≤ A, B, C, D, E ≤ 1,000)
출력
첫째 줄에 모든 물건을 담는데 필요한 바구니 개수의 최솟값을 출력한다.
풀이
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int A, B, C, D, E;
cin >> A >> B >> C >> D >> E;
// 4, 5kg 물건
int cnt = D + E;
A -= min(A, D);
// 3kg 물건
cnt += C;
if (B >= C)
B -= C;
else {
A -= (C - B) * 2;
B = 0;
}
// 2kg 물건
if (B > 0) {
cnt += B / 2 + B % 2; // 2kg * 2 + 1kg
A -= B / 2 + (B % 2) * 3; // 2kg + 1kg * 3
}
// 1kg 물건
if (A > 0) cnt += A / 5 + (bool)(A % 5); // 1kg * 5 + 나머지를 담은 바구니 1개
cout << cnt << '\n';
return 0;
}
3, 4, 5kg인 물건은 무조건 바구니를 하나씩 사용한다. 이때 바구니를 최소한으로 사용해야 하므로 더 가벼운 물건과 함께 담을 수 있는 3, 4kg인 물건의 경우 남은 kg를 다른 물건으로 채워야 함을 고려하여 코드를 작성해야 한다.
'백준 > C++' 카테고리의 다른 글
| [Baekjoon/C++] 2358번 - 평행선 (0) | 2025.10.11 |
|---|---|
| [Baekjoon/C++] 34543번 - 와우산 스탬프 투어 (0) | 2025.10.01 |
| [Baekjoon/C++] 31216번 - 슈퍼 소수 (0) | 2025.09.23 |
| [Baekjoon/C++] 30822번 - UOSPC 세기 (0) | 2025.09.22 |
| [Baekjoon/C++] 25631번 - 마트료시카 합치기 (0) | 2025.09.15 |
