반응형
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
| 1 초 | 128 MB | 303715 | 130925 | 99579 | 43.470% |
문제
현진 치킨에서 판매하는 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨으로 총 세 종류이다. 반반 치킨은 절반은 양념 치킨, 절반은 후라이드 치킨으로 이루어져 있다. 양념 치킨 한 마리의 가격은 A원, 후라이드 치킨 한 마리의 가격은 B원, 반반 치킨 한 마리의 가격은 C원이다.
상도는 오늘 파티를 위해 양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하려고 한다. 반반 치킨을 두 마리 구입해 양념 치킨 하나와 후라이드 치킨 하나를 만드는 방법도 가능하다. 상도가 치킨을 구매하는 금액의 최솟값을 구해보자.
입력
첫째 줄에 다섯 정수 A, B, C, X, Y가 주어진다.
출력
양념 치킨 최소 X마리, 후라이드 치킨 최소 Y마리를 구매하는 비용의 최솟값을 출력한다.
제한
- 1 ≤ A, B, C ≤ 5,000
- 1 ≤ X, Y ≤ 100,000
예제 입력 |
예제 출력 |
| 1500 2000 1600 3 2 | 7900 |
| 반반 치킨 4마리를 구매해서, 양념 치킨 2마리와 후라이드 치킨 2마리를 만들고, 양념 치킨 1마리를 구매하는 것이 최소이다. |
|
| 1500 2000 1900 3 2 | 8500 |
| 1500 2000 500 90000 100000 | 100000000 |
풀이 과정
반반 치킨 2마리로 양념과 후라이드 치킨을 1마리 만들수 있기 때문에 양념과 후라이드 가격의 합이 반반 2마리의 가격보다 클 때와 작을 때로 나눕니다.
양념+후라이드가 반반2마리보다 클 경우 반반 치킨으로 살 수 있는 최대 개수를 구입한 후 나머지를 남은 양념 또는 후라이드로 구매합니다. 이때 나머지 치킨을 단품으로 사는 경우와 반반으로 사는 경우 중에서 최솟값을 찾아야 합니다.
양념 + 후라이드가 반반 2마리보다 적을 경우 단품으로 시키는 게 더 낫기 때문에 단품으로 구매합니다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt(); //양념
int B = sc.nextInt(); //후라이드
int C = sc.nextInt(); //반반
int X = sc.nextInt(); //양념 갯수
int Y = sc.nextInt(); //후라이드 갯수
int price1 = A+B; //양념 후라이드합한거
int banban =C+C; //반반 두개 합한거
long sum =0;
if (price1 > banban) { // 반반으로 최대한 많은 개수를 확보 -> X, Y 중에 더 적은것을 반반으로 최대한 산다.
if (X > Y) { //X 가 크다면 Y * (C * 2) 그러면 X-Y 개수의 후라이드(A)를 더 사야한다.
//(X-Y)*A 와 (X-Y)*(C*2) 중 작은 값을 더해준다.
//양념을 더 사더라도 반반이 싸다면 최소비용이 적어지기 때문
sum += Y*banban;
sum += Math.min((X - Y) * A, (X - Y) * banban);
}else {
sum += X*banban;
sum += Math.min((Y - X) * B, (Y - X) * banban);
}
}
else if (price1 <= banban){ //단품을 시키는게 더 낫다
for (int i =0; i<X; i++) sum += A;
for (int i =0; i<Y; i++) sum += B;
}
System.out.println(sum);
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
| 백준 16923 : 다음 다양한 단어 C++ (0) | 2023.07.21 |
|---|---|
| 백준 : 11651 : 좌표 정렬하기 2 Java (0) | 2023.07.20 |
| 백준 13335 : 트럭 Java (0) | 2023.07.19 |
| 백준 17413 : 단어 뒤집기 2 Java (0) | 2023.07.18 |
| 백준 16926 : 배열 돌리기 1 Java (0) | 2023.07.17 |