알고리즘
[Java] 백준 3343번 장미
J3SUNG
2023. 7. 22. 17:34
728x90
N개의 장미를 가장 싸게 구매할 수 있는 금액을 구하는 문제입니다.
가성비가 좋은 장미와 가성비가 좋지 못한 장미로 나눕니다.
이를 X와 Y로 볼 경우 Y는 X개 보다 적은 경우에만 정답이 나올 수 있습니다.
그래서 Y를 0개부터 X-1개 까지 구매하는 경우의 수를 전부 확인하여 결과값을 찾아냈습니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
long n = Long.parseLong(st.nextToken());
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long c = Long.parseLong(st.nextToken());
long d = Long.parseLong(st.nextToken());
long result = Long.MAX_VALUE;
if (b * c < d * a) {
long temp;
temp = a;
a = c;
c = temp;
temp = b;
b = d;
d = temp;
}
for (int i = 0; i < c; ++i) {
long index = (long) Math.ceil((double) (n - i * a) / c);
if (index < 0) {
index = 0;
}
result = Math.min(result, i * b + index * d);
if (index == 0) {
break;
}
}
bw.write(result + "\n");
bw.close();
}
}