자료구조&알고리즘/백준
2075번: N번째 큰 수 [JAVA]
yong_ღ'ᴗ'ღ
2023. 7. 20. 00:28
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
접근 방식)
N²개의 수가 주어졌을 때, N번째 큰 수를 찾는 것이므로,
1. 내림차순의 우선순위 큐를 만들어서, N²개를 입력한다.
2. N - 1개 까지의 큰 수를 poll()하고
3. N번째로 큰 수를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class B_2075 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
StringTokenizer st;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
pq.add(Integer.parseInt(st.nextToken()));
}
}
for (int i = 0; i < N - 1; i++)
pq.poll();
System.out.println(pq.poll());
}
}