Algorithm/백준 문제풀이

[백준] 2075 N번째 큰 수 - Java

너지살 2023. 11. 1. 14:49

 

 

 

문제 출저

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

 

2075번: N번째 큰 수

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

www.acmicpc.net

 

 

 

문제 풀이

n이 주어지며 n*n의 2차원 배열로 된 숫자들이 주어집니다. 이 때 이 숫자들 중 n번째로 큰 숫자를 구해야 합니다. 

 

우선수위 큐를 이용해 풀었습니다.

2차원 배열의 숫자들을 우선순위 큐에 넣어 n번째 큰 숫자를 구했습니다.

 

 

소스 코드

package baekjoon.backjoon11.day0110.day01;

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

/*
N번째 큰 수
https://www.acmicpc.net/problem/2075
 */
public class B2075 {

  static int n;
  static int[][] board;

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    n = Integer.parseInt(br.readLine());
    board = 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++) {
        board[i][j] = Integer.parseInt(st.nextToken());
        pq.add(board[i][j]);
      }
    }

    int answer = 0;
    for(int i = 0; i < n; i++) {
      answer = pq.poll();
    }

    System.out.println(answer);






  }
}