관리 메뉴

NineTwo meet you

[백준/자바] 16917 양념 반 후라이드 반 본문

프로그래밍 문제/백준

[백준/자바] 16917 양념 반 후라이드 반

NineTwo 2020. 12. 22. 22:55
반응형

출처


문제 & 예제

더보기

문제

현진 치킨에서 판매하는 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨으로 총 세 종류이다. 반반 치킨은 절반은 양념 치킨, 절반은 후라이드 치킨으로 이루어져 있다. 양념 치킨 한 마리의 가격은 A원, 후라이드 치킨 한 마리의 가격은 B원, 반반 치킨 한 마리의 가격은 C원이다.

상도는 오늘 파티를 위해 양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하려고 한다. 반반 치킨을 두 마리 구입해 양념 치킨 하나와 후라이드 치킨 하나를 만드는 방법도 가능하다. 상도가 치킨을 구매하는 금액의 최솟값을 구해보자.

입력

첫째 줄에 다섯 정수 A, B, C, X, Y가 주어진다.

출력

양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하는 비용의 최솟값을 출력한다.

제한

  • 1 ≤ A, B, C ≤ 5,000
  • 1 ≤ X, Y ≤ 100,000

예제

예제 입력 1 예제 출력 1
1500 2000 1600 3 2 7900

반반 치킨 4마리를 구매해서, 양념 치킨 2마리와 후라이드 치킨 2마리를 만들고, 양념 치킨 1마리를 구매하는 것이 최소이다.

예제 입력 2 예제 출력 2
1500 2000 1900 3 2 8500
예제 입력 3 예제 출력 3
1500 2000 500 90000 100000 100000000

 

설명

양념 치킨 가격 A원, 후라이드 치킨 가격은 B원, 반반 치킨 가격은 C원, 양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리

순서로 입력이 주어진다.

X와 Y는 각각 최소의 개수이므로 더 사도 상관없다.

 

1) X와 Y 중 더 작은 수를 구한다.

2) 2*c와 a+b를 비교해 반반을 두 개 살 건지 각각 한 마리를 살 건지 정한다.

3) 1)에서 구한 개수만큼의 치킨을 2)의 방식으로 구한다.

4) 남는 치킨의 경우 더 사도 상관없으니 반반을 두 개 사서 한 마리를 만들 것인지 한 마리를 살 건지 정한다.

 

예제 입력 3을 이용해보자.

양념 가격 : 1500

후라이드 가격 : 2000

반반 가격 : 500

양념 최소 개수 : 90000

후라이드 최소 개수 : 100000

 

1) 양념과 후라이드 개수를 비교하면 90000인 양념이 더 적다.

2) 2*c와 a+b를 비교해보면 1000 < 1500 + 2000 = 3700으로 각각 한 마리를 사는 것보다 반반을 두 마리 사는 것이 저렴한 것을 확인할 수 있다.

 

3)

따라서 500 => 양념 1/2 + 후라이드 1/2

1000 => 양념 1 + 후라이드 1 이 된다.

양념과 후라이드 각각 최소 개수인 90000마리를 사기 위해서는 90000*1000 = 90000000가 필요하다.

 

4) 여기까지 보면 양념은 다 구매했지만 후라이드는 100000 - 90000 = 10000마리가 부족하다.

따라서 남은 후라이드 10000마리를 반반으로 1마리를 만들어서 살지 후라이드만 살지 정해야 한다.

 

반반으로 구매하면 500*2 = 1000 => 양념 1 + 후라이드 1 이기 때문에 10000*1000 = 10000000이 필요하지만

후라이드만 구매한다면 10000*2000 = 20000000으로 더 많은 비용이 필요하게 된다.

따라서 양념을 더 구매하지만 반반으로 한 마리를 채우는 게 더 저렴한 것을 확인할 수 있으므로 최종적으로

3)과 4)을 합친 가격인

90000000 + 10000000 = 100000000이 최소비용이다.

 

코드

반응형
Comments