sm 기술 블로그
182. 11279(최대 힙) - 자바 본문
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int N = sc.nextInt();
PriorityQueue<Integer> que = new PriorityQueue<>();
for (int i = 0; i < N; i++) {
int X = sc.nextInt();
if(X==0) {
if(que.isEmpty()) {
sb.append(0).append("\n");
}
else {
sb.append(-que.remove()).append("\n");
}
}
else {
que.add(-X);
}
}
System.out.print(sb);
}
}
문제요약
값을 입력하는데 0이면 현재 입력된 값 중에 가장 큰 값을 출력하라.(내림차순 필요)
설명
우선순위 큐를 이용한다.
유선순위 큐에 대해서는 다음을 참고하자.
https://smhope.tistory.com/485?category=1056187
기본적으로 우선순위 큐는 오름차순으로 진행된다.
하지만 우리는 내림차순이 필요하다 따라서 큐에 값을 집어 넣기 전에, -를 붙여 넣어주자.
그러면 비록 - 형태이지만 절대값 기준으로는 내림차순으로 정렬된다.
출력을 해줄 때 다시 -를 붙여줌으로써 간단히 해결 가능하다.
'문제 > 백준_자바' 카테고리의 다른 글
184. 11286(절댓값 힙) - 자바 (0) | 2022.08.22 |
---|---|
183. 1927(최소 힙) - 자바 (0) | 2022.08.22 |
181. 12015(가장 긴 증가하는 부분 수열2) - 자바 (0) | 2022.08.21 |
180. 1300(K번째 수) - 자바 (0) | 2022.08.17 |
179. 2110(공유기 설치) - 자바 (0) | 2022.08.16 |
Comments