Problem Solving/BOJ(백준)
[BOJ]백준 16917번 : 양념 반 후라이드 반
이진2
2019. 4. 26. 23:41
https://www.acmicpc.net/problem/16917
16917번: 양념 반 후라이드 반
현진 치킨에서 판매하는 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨으로 총 세 종류이다. 반반 치킨은 절반은 양념 치킨, 절반은 후라이드 치킨으로 이루어져있다. 양념 치킨 한 마리의 가격은 A원, 후라이드 치킨 한 마리의 가격은 B원, 반반 치킨 한 마리의 가격은 C원이다. 상도는 오늘 파티를 위해 양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하려고 한다. 반반 치킨을 두 마리 구입해 양념 치킨 하나와 후라이드 치킨 하나를 만드는 방법도 가
www.acmicpc.net
양념치킨, 후라이드치킨, 반반치킨의 구매 수를 조절해서 목표하는 치킨 수를 만들 수 있는 최소 금액을 구하는 문제이다.
포인트는 최소 금액이라면 치킨이 남아도 상관없다는 것이다.
예를 들면, 양념1마리 후라이드 5마리가 필요하고, 각각의 치킨 가격이 10000, 50000, 500원일 때 그냥 반반치킨을 10마리 사고 남는 치킨은 버리면된다.ㅎㅎ
문제는 양념+후라이드 치킨값 (<,>,=) 반반치킨값*2에 따라 나뉘는데, 그닥 어렵지 않은 문제.
1. 따로 살 경우
2. 반반으로 사고 남는 양을 한마리로 살 경우
3. 전부 반반으로 살 경우
을 고려하여 문제를 해결하면 된다.
#include <cstdio>
int a, b, c, x, y, sum, min, t;
int main() {
scanf("%d%d%d%d%d", &a, &b, &c, &x, &y);
t = c * 2 * (x > y ? x : y);
//반반치킨으로만 산다고 가정했을 때 금액
if (a + b > c * 2) { //따로보다 반반으로 사는게 이득일 때
min = x > y ? y : x; //양 or 후 중 적은 치킨 수를 저장
sum = c * 2 * min; //적은 치킨수에 맞춰서 반반치킨을 시킨다
x -= min; y -= min; //반반치킨을 시킨만큼 시켜야되는 치킨수를 뺀다
}
sum += a * x + b * y; //남은 양의 치킨 값 계산
if (t < sum)
sum = t; //반반만 사서 남는게 더 이득이라면
printf("%d", sum);
return 0;
}