어제의 나보다 성장한 오늘의 나

[백준][BOJ-2075][자바] N번째 큰 수 본문

알고리즘/백준(BOJ)

[백준][BOJ-2075][자바] N번째 큰 수

NineOne 2021. 4. 18. 23:05

www.acmicpc.net/problem/2075

 

2075번: N번째 큰 수

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

www.acmicpc.net

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		int[][] map = new int[N][N];
		PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
		
		for(int i=0; i<N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for(int j=0; j<N; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				pq.offer(map[j][i]);
			}
		}
		
		for(int i=0; i<N-1; i++) {
			pq.poll();
		}
		System.out.println(pq.poll());
	}
}

정리

  • 우선순위 큐를 사용한다면 쉽게 풀리는 문제이다.
  • 2차원 배열을 최대 힙 형태인 우선순위 큐에 넣어준다.
  • N번째의 큰수를 찾아야 되기 때문에 N-1번 까지 우선순위 큐를 제거해준다.
Comments