알고리즘 (Java)

(Java) 백준 2075 N번째 큰 수

고치불 2023. 4. 26. 00:32

문제 링크

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

나의 기록

✅ 알고리즘 분류 : 자료구조 (우선순위 큐)

✅ 성공 여부 : ✔

✅ 문제 난이도 : 실버2

✅ 체감 난이도 : Easy

접근 방법

문제를 잘 읽자. 우선순위 큐에 넣을 원소는 10억까지의 범위므로 int가 아니라 long이어야 한다.

Collections.reverseOrder()를 사용하여 자료구조를 내림차순으로 (반대로) 정렬할수도 있다.

 

코드

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 bj2075_N번째큰수 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        PriorityQueue<Long> 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++){
                pq.add(Long.parseLong(st.nextToken()));
            }
        }

        Long ans = 0L;
        for(int i = 0 ; i < N ; i++){
            if(i == N-1) ans = pq.poll();
            else pq.poll();
        }
        System.out.println(ans);
    }
}