문제 풀이/백준

[백준] 2075번. N번째 큰 수 (JAVA)

27200 2024. 2. 8. 18:34

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


문제


풀이

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));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());

        PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) ->{
            int i = o1 > o2 ? -1 : 1;
            return i;
        });

        for(int i = 0; i < n; i++){
            st = new StringTokenizer(br.readLine());
            for(int j = 0; j < n; j++){
                queue.offer(Integer.parseInt(st.nextToken()));
            }
        }

        for(int i = 0; i < n-1; i++){
            queue.poll();
        }

        System.out.println(queue.poll());

    }

}

 

n번째 큰 수가 뭐지? 에 대해 처음에 바로 이해하지는 못했다. 2차원 배열이기 때문에 어떤 행 혹은 열에서 찾으라는 의미인 줄 알았기 때문이다. 하지만 단순하게 정렬한 뒤에 찾으라는 소리였다.

 

배열로 받아 Arrays.sort()를 사용하면 각 행에 대해서 적용되기 때문에 해결에 어려움이 있다.

 

따라서 숫자가 들어오는대로 우선순위 큐에 넣어서 람다식을 통해 내림차순 정렬을 한 뒤에 n-1개의 데이터를 뽑아내고 n번째 데이터를 출력하면 된다.