백준
백준 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());
}
}