728x90
15720번: 카우버거
첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진
www.acmicpc.net
풀이
기억하자. 큐와 같은 자료구조는 안에 있는 요소를 뽑아낼 때 마다 큐의 사이즈가 줄어든다는 것을.
꼭. 기억하자 .~~~~~~~!!!!!!!
전체코드
package 백준renew;
import java.io.*;
import java.util.*;
public class 실버5_15720_카우버거 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
PriorityQueue<Integer> hamQ = new PriorityQueue<>(new Comparator<>() {
public int compare(Integer o1, Integer o2) {
if(o1 < o2) {
return 1;
}else if(o1 > o2) {
return -1;
}else {
return 0;
}
}
});
PriorityQueue<Integer> sideQ = new PriorityQueue<>(new Comparator<>() {
public int compare(Integer o1, Integer o2) {
if(o1 < o2) {
return 1;
}else if(o1 > o2) {
return -1;
}else {
return 0;
}
}
});
PriorityQueue<Integer> drinkQ = new PriorityQueue<>(new Comparator<>() {
public int compare(Integer o1, Integer o2) {
if(o1 < o2) {
return 1;
}else if(o1 > o2) {
return -1;
}else {
return 0;
}
}
});
int num = Integer.MAX_VALUE;
StringTokenizer st = new StringTokenizer(br.readLine());
int H = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
num = Math.min(H, Math.min(S, Math.min(D, num)));
st = new StringTokenizer(br.readLine());
for(int i=0; i<H; i++) {
int tmp = Integer.parseInt(st.nextToken());
hamQ.offer(tmp);
}
st = new StringTokenizer(br.readLine());
for(int i=0; i<S; i++) {
int tmp = Integer.parseInt(st.nextToken());
sideQ.offer(tmp);
}
st = new StringTokenizer(br.readLine());
for(int i=0; i<D; i++) {
int tmp = Integer.parseInt(st.nextToken());
drinkQ.offer(tmp);
}
int sum = 0;
for(int i=0; i<num; i++) {
int h = hamQ.poll();
int s = sideQ.poll();
int d = drinkQ.poll();
sum += (h+s+d);
}
int el = 0;
if(!hamQ.isEmpty()) {
while(!hamQ.isEmpty()) {
el += hamQ.poll();
}
}
if(!sideQ.isEmpty()) {
while(!sideQ.isEmpty()) {
el += sideQ.poll();
}
}
if(!drinkQ.isEmpty()) {
while(!drinkQ.isEmpty()) {
el += drinkQ.poll();
}
}
sb.append(sum+el).append('\n').append((int)(sum*0.9)+el);
bw.write(sb.toString());
bw.close();
}
}
728x90
'코딩테스트 > Algorithm' 카테고리의 다른 글
[BOJ] 1431: 시리얼 번호 (JAVA) (0) | 2024.04.21 |
---|---|
[BOJ] 17390: 이건 꼭 풀어야 해! (JAVA) (1) | 2024.04.19 |
[BOJ] 1063: 킹 (JAVA) (0) | 2024.04.17 |
[BOJ] 1270: 전쟁 - 땅따먹기 (JAVA) (0) | 2024.04.16 |
[BOJ] 25206: 너의 평점은 (JAVA) (0) | 2024.04.16 |