https://www.acmicpc.net/problem/14235
- 예제 입력1
5
0
2 3 2
0
0
0
- 예제 출력1
-1
3
2
-1
- 문제 접근
- 아이들을 만났을 때 가장 가치가 큰 선물을 준다 ⇒ 최대 힙
- 입력
- 첫 번째 줄 ⇒ 아이들 or 거점지 방문 횟수 N
- 두 번째 줄
- 0일 경우 아이들을 만남 ⇒ 선물 증정
- 0이 아닐 경우 거점지에서 N개만큼의 선물 충전
- 출력
- 아이들을 만남 ⇒ 최대 가치 선물 출력
- 줄 선물이 없다면 -1
- 아이들을 만남 ⇒ 최대 가치 선물 출력
- 문제 해결
- 단순한 최대 힙 문제
- 0일 경우 출력, 0이 아닐 경우 N번 만큼 반복문으로 최대 힙에 값 추가
- 기존 풀이 [메모리 : 43216 KB / 시간 : 472 ms]
public static void main(String[] args) throws Exception{
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Integer> present = new PriorityQueue<>((o1,o2) -> o2 - o1);
int visit_count = Integer.parseInt(br.readLine());
for(int i = 0; i < visit_count; i++){
int[] check = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
if(check[0] == 0){ // 0이라면 출력
if(present.isEmpty()) sb.append(-1);
else sb.append(present.poll());
sb.append("\n");
}else { // 0이 아니라면 거점지에서 선물 추가
for(int j = 1; j < check.length; j++) present.offer(check[j]);
}
}
System.out.println(sb);
}
'Coding Test > Problem Number' 카테고리의 다른 글
[Java] 보물 [1026번] (0) | 2024.07.26 |
---|---|
[Java] 패션왕 [9375번] (0) | 2024.07.25 |
[Java] 최소 힙 [1927번] (0) | 2024.07.25 |
[Java] 센티와 마법의 뿅망치 [19638번] (0) | 2024.07.25 |
[Java] 요세푸스 문제 [1158번] (0) | 2024.07.24 |