백준|2075번|N번째 큰 수

JSK·2022년 7월 31일
0

자바 PS풀이

목록 보기
30/51

문제설명
N*N 개의 수를 입력받고 N번째로 큰 수를 출력하는 문제입니다.

작동 순서
1. N을 입력받습니다.
2. N개의 수열을 N번 입력받고 우선순위 큐에 저장합니다.
3. 우선순위 큐에 저장되어 있는 수를 앞에서부터 N-1개 제거합니다.
4. 우선순위 큐의 가장 앞에 있는 수를 출력합니다.(N-1개를 제거했으므로 N번째로 큰 수입니다.)

소스코드

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 백준_2075번_N번째큰수 {
    static PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args) throws IOException {
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st;
        for(int i=0;i<N;i++){
            st = new StringTokenizer(br.readLine());
            while(st.hasMoreTokens()) maxHeap.add(Integer.parseInt(st.nextToken()));
        }
        for(int i=0;i<N-1;i++){
            maxHeap.poll();
        }
        System.out.print(maxHeap.poll());
    }
}

후기
문제에 나와있는 규칙을 보고 그 규칙으로 문제를 풀어야 하나 했는데 그냥 단순하게 생각하면 쉽게 풀 수 있는 문제였습니다. 문제를 풀 때 너무 문제에 나와있는 글들에 집착하지 않도록 해야할 것 같습니다.

profile
학사지만 AI하고 싶어요...

0개의 댓글