큰 순서대로 저장한 후 5번째 값을 출력하도록 하면 되는 문제
배열 하나에 다 저장한 다음에 배열을 정렬할까 했는데 우선순위 큐를 저번에 사용한 기억이 있어서 사용해보기로 함
아직도 익숙치 않으니 관련된 문제 조금 더 풀어볼 것
주석은 꼼꼼히
풀기 전에 미리 생각 정리해서 적어두기
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
// 우선순위 큐
// Collections.reverseOrder를 사용하면 큰 것부터 앞으로 정렬이고
// 비어있으면 오름차순으로 정렬
PriorityQueue<Integer> priorityQueueHighest = new PriorityQueue<>(Collections.reverseOrder());
// 한 줄씩 읽어서 우선순위 큐에 저장
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
while (st.hasMoreTokens()) {
priorityQueueHighest.add(Integer.parseInt(st.nextToken()));
}
}
// N -1 번째 까지 우선순위 큐에서 삭제
for (int i = 0; i < N - 1; i++) {
priorityQueueHighest.poll();
}
// N 번째로 큰 숫자 출력
bw.write(priorityQueueHighest.poll() + "\n");
bw.flush();
bw.close();
br.close();
}
}