[BOJ] 16917 양념 반 후라이드 반
시뮬레이션 예제
문제
https://www.acmicpc.net/problem/16917
문제 풀이
package Baekjoon.Implementation;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* Created by kyeahen.
* Title : 16917 양념 반 후라이드 반
* Category : 구현
* Date: 2021/02/15
*/
public class BJ_16917 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
int Y = Integer.parseInt(st.nextToken());
/*
2(x + y) = x + y
반반 후라이드 + 양념
원래는 반반이 더 저렴할 경우에는 반반으로 구매하고, 남은건 무조건 각각 계산했음.
예제3이 위의 방식의 반례가 됨.
반반이 저렴한 경우는 개수를 초과해도 반반으로 구매했을 시, 최소가 됨
*/
int sum = 0;
if (2 * C < A + B) { //반반이 각각 사는 것보다 더 저렴
if (X > Y) { //x 남음
sum += (2 * C) * Y;
// ! 이 부분을 놓쳤었음
// - 남은 개수를 반반, 각각 구매 중 더 저렴한 것으로 구매
int x = X - Y;
sum += Math.min((2 * C) * x, A * x);
} else { //y 남음
sum += (2 * C) * X;
int y = Y - X;
sum += Math.min((2 * C) * y, B * y);
}
} else { //따로 사는게 더 저렴
sum += (A * X) + (B * Y);
}
System.out.println(sum);
}
}
TMI
21/02/17: 알고리즘 스터디 문제 풀이🤓
댓글남기기