하루에 한 문제

[BOJ-2075] N번째 큰 수 -Java 본문

알고리즘/백준

[BOJ-2075] N번째 큰 수 -Java

dkwjdi 2021. 4. 19. 17:23

https://www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

www.acmicpc.net

package BOJ_투포인터;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class boj_2075_N번째큰수 {
	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		
		PriorityQueue<Long> pq = new PriorityQueue<Long>(Collections.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++) {
				pq.add(Long.parseLong(st.nextToken()));
			}
		}
		
		for(int i=0; i<N-1; i++) {
			pq.poll();
		}
		
		System.out.println(pq.poll());
	}

}

소요시간 : 12분

 

우선순위 큐(최대 힙)를 이용해 풀이하였습니다!

 

입력으로 들어오는 수를 모두 우선순위 큐에 넣은 후

N-1번 만큼 poll()를 해서 최댓값을 빼줍니다.

 

그 후 poll()을 한 번 해주면 답이 나옵니다!

 

Comments