ALGORITHM/BOJ
[백준] 2075 N번째 큰 수
0298
2021. 9. 26. 22:27
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
2021-09-26
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine().trim());
int N = Integer.parseInt(st.nextToken());
PriorityQueue<Integer> pq = new PriorityQueue<>();
st = new StringTokenizer(bf.readLine());
for(int i = 0; i < N; i++) pq.add(Integer.parseInt(st.nextToken()));
for(int i = 0; i < N-1; i++) {
st = new StringTokenizer(bf.readLine());
for(int j = 0; j < N; j++) {
int num = Integer.parseInt(st.nextToken());
if(pq.peek() < num) {
pq.poll();
pq.add(num);
}
}
}
System.out.println(pq.poll());
}
}
|
cs |
#문제풀이
우선순위 큐 + 슬라이딩 윈도우
line 15) 맨 처음 입력 값은 그냥 받아서 일단 큐에서 넣는다.
line 20) 한 줄 씩 받으면서 현재 있는 큐에 있는 값(N만큼 있음) 중에 가장 앞에 있는 값이랑 새로 들어오는 값이랑 비교한다.
만약, 새로 들어오는 값이 현재 값보다 크다면 현재 값을 poll 해주고, 새로운 값을 큐에 넣어준다.