백준

백준 2075: N번째 큰 수(java)

unhyepnhj 2024. 8. 24. 17:29

문제


풀이

 

우선순위 큐를 이용하면 쉽게 풀 수 있다.

 

N*N개의 수를 모두 우선순위 큐에 삽입하고 (N-1)개의 요소를 삭제한 뒤 N번째 요소를 출력하면 된다.

N번째로 큰 수를 출력해야 하므로 최대 우선순위 큐를 사용하고, 이를 위해 PriorityQueue 객체 생성 시 Comparator.reverseOrder()를 지정해야 함에 주의하자.

 

전체 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		PriorityQueue<Integer> queue=new PriorityQueue<>(Comparator.reverseOrder());
	
		int N=Integer.parseInt(br.readLine());
		for(int i=0; i<N; i++) {
			StringTokenizer st=new StringTokenizer(br.readLine());
			
			for(int j=0; j<N; j++) {
				queue.add(Integer.parseInt(st.nextToken()));
			}
		}
		
		for(int i=0; i<N-1; i++) {
			queue.poll();
		}
		
		System.out.println(queue.poll());
	}
}