알고리즘/백준
[JAVA]백준_2075_N번째 큰 수
박 현 황
2021. 4. 27. 13:38
문제링크
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
초반에 TreeMap을 이용하여 한꺼번에 다 받아서 출력을 해보았는데 그렇게 할 시 시간초과가 발생했다.
따라서 우선순위 큐를 써서 해결하였다.
+그냥 배열에 다 입력한 뒤 정렬하여도 해결된다,,!
package BOJ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class Main_2075 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// TreeMap<Integer,Integer> map = new TreeMap<>();
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++) map.put(Integer.parseInt(st.nextToken()),1);
for(int j=0;j<N;j++){
int number = Integer.parseInt(st.nextToken());
if(pq.size()<N){
pq.offer(number);
}
else if(pq.size() == N){
if(pq.peek()<number){
pq.poll();
pq.offer(number);
}
}
}
}
System.out.println(pq.peek());
// int number = 0;
// for(int i=0;i<N;i++){
// number = map.lastKey();
// map.pollLastEntry();
// }
// System.out.println(number);
}
}