문제
현진 치킨에서 판매하는 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨으로 총 세 종류이다. 반반 치킨은 절반은 양념 치킨, 절반은 후라이드 치킨으로 이루어져있다. 양념 치킨 한 마리의 가격은 A원, 후라이드 치킨 한 마리의 가격은 B원, 반반 치킨 한 마리의 가격은 C원이다.
상도는 오늘 파티를 위해 양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하려고 한다. 반반 치킨을 두 마리 구입해 양념 치킨 하나와 후라이드 치킨 하나를 만드는 방법도 가능하다. 상도가 치킨을 구매하는 금액의 최솟값을 구해보자.
입력
첫째 줄에 다섯 정수 A, B, C, X, Y가 주어진다.
출력
양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하는 비용의 최솟값을 출력한다.
제한
- 1 ≤ A, B, C ≤ 5,000
- 1 ≤ X, Y ≤ 100,000
구현해야할 조건
자! 최소 X마리 최소 Y마리를 주목하면 됩니다! 저는 최소라는 단어를 못읽고 정확히 정해준 치킨을 사는 것으로 착각을 해서 문제를 좀 헤맸습니다. 치킨은 많으면 많을수록 다다익선이니까 더 사도 돼! 가격이 싸다면!
code
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int A,B,C,X,Y;
int main()
{
// A : 양념, B : 후라이드, C : 반반, X : 양념, Y : 후라이드
cin >> A >> B >> C >> X >> Y;
int chichi = (A*X) + (B*Y);
int halfchi = 0;
//최소 X마리 최소 Y마리에 주목!
if(X == Y)
{
halfchi = X * 2 * C;
}
else if(X > Y) // 양념이 더 많을때
{
halfchi = min(Y * 2 * C + (X-Y) * A, Y * 2 * C + (X-Y) * 2 * C);
}
else if(Y > X) // 후라이드가 더 많을 때
{
halfchi = min(X * 2 * C + (Y-X) * B, X * 2 * C + (Y - X) * 2 * C);
}
int res = min(halfchi, chichi);
cout << res;
return 0;
}
'PS > BaekJoon' 카테고리의 다른 글
[백준/c++] 14225 부분수열의 합 (0) | 2022.03.23 |
---|---|
[백준/c++] 16967 배열 복원하기 (0) | 2022.03.22 |
[백준/c++] 17135 캐슬 디펜스 (0) | 2022.03.16 |
[백준/c++] 배열 돌리기 4 (0) | 2022.03.15 |
[백준/c++] 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2022.03.15 |