백준 2075 (N번째 큰 수) - JAVA

more·2023년 10월 5일
0

큰 순서대로 저장한 후 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();
    }

}
profile
조금 더

0개의 댓글