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;
}