[백준] 2075: N번째 큰 수 - JAVA
https://www.acmicpc.net/problem/2075
풀이
N * N 개의 숫자 중에 N번째로 큰 숫자를 찾아야 한다.
우선순위큐를 사용해 정렬방식을 내림차순으로 하여 N개만큼 뽑는 방법이 있다.
이때는 Collections.reverseOrder()
를 사용해야 한다.
나는 오름차순 우선순위큐의 사이즈를 N으로 유지시키면서 값을 집어넣고 마지막에 하나를 뽑기로 했다.
이렇게하면 가장 큰 수 N개가 우선순위큐에 들어있게 되고, poll하면 N번째로 큰 숫자가 나온다.
메모리: 244104KB
시간: 944ms
언어: Java 11
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
int tmp = Integer.parseInt(st.nextToken());
pq.add(tmp);
if (pq.size() > N) {
pq.poll();
}
}
}
System.out.println(pq.poll());
}
}