※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26070번 문제인 곰곰이와 학식이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26070
26070번: 곰곰이와 학식
첫 번째 줄에 치킨을 먹고 싶은 곰곰이의 마릿수 $A$, 피자를 먹고 싶은 곰곰이의 마릿수 $B$, 햄버거를 먹고 싶은 곰곰이의 마릿수 $C$가 공백으로 구분되어 주어진다. $(0\le A,B,C\le 10^{9})$ 두 번째
www.acmicpc.net
가능한 세 종류의 쿠폰 교환을 한번에 전부 이용하지 않는 방법중에 최대로 먹일 수 있는 방법이 항상 존재함을 관찰하자.
따라서 교환하지 않을 쿠폰을 하나 정하고, 각 경우에 대한 문제의 해답을 구해 그중 최댓값을 출력하는 것으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
ll A, B, C;
ll X, Y, Z;
ll ans1, ans2, ans3;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> A >> B >> C >> X >> Y >> Z;
{
ll a = A, b = B, c = C, x = X, y = Y, z = Z;
ans1 += min(a, x);
x -= min(a, x); y += x / 3;
ans1 += min(b, y);
y -= min(b, y); z += y / 3;
ans1 += min(c, z);
}
{
ll a = A, b = B, c = C, x = X, y = Y, z = Z;
ans2 += min(b, y);
y -= min(b, y); z += y / 3;
ans2 += min(c, z);
z -= min(c, z); x += z / 3;
ans2 += min(a, x);
}
{
ll a = A, b = B, c = C, x = X, y = Y, z = Z;
ans3 += min(c, z);
z -= min(c, z); x += z / 3;
ans3 += min(a, x);
x -= min(a, x); y += x / 3;
ans3 += min(b, y);
}
cout << max(ans1, max(ans2, ans3));
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 26082 // C++] WARBOY (0) | 2022.12.01 |
---|---|
[BOJ 26068 // C++] 치킨댄스를 추는 곰곰이를 본 임스 2 (0) | 2022.12.01 |
[BOJ 26069 // C++] 붙임성 있는 총총이 (0) | 2022.12.01 |
[BOJ 2168 // C++] 타일 위의 대각선 (0) | 2022.12.01 |
[BOJ 26072 // C++] 곰곰이와 시소 (0) | 2022.12.01 |