본문 바로가기
알고리즘/백준

[JAVA]백준_2075_N번째 큰 수

by 박 현 황 2021. 4. 27.

문제링크

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

 

2075번: N번째 큰 수

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

www.acmicpc.net

 

초반에 TreeMap을 이용하여 한꺼번에 다 받아서 출력을 해보았는데 그렇게 할 시 시간초과가 발생했다.

따라서 우선순위 큐를 써서 해결하였다.

+그냥 배열에 다 입력한 뒤 정렬하여도 해결된다,,!

package BOJ;

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

public class Main_2075 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

       // TreeMap<Integer,Integer> map = new TreeMap<>();
        PriorityQueue<Integer> pq = new PriorityQueue<>();

        for(int i=0;i<N;i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            //for(int j=0;j<N;j++) map.put(Integer.parseInt(st.nextToken()),1);
            for(int j=0;j<N;j++){
                int number = Integer.parseInt(st.nextToken());
                if(pq.size()<N){
                    pq.offer(number);
                }
                else if(pq.size() == N){
                    if(pq.peek()<number){
                        pq.poll();
                        pq.offer(number);
                    }
                }
            }
        }
        System.out.println(pq.peek());
//        int number = 0;
//        for(int i=0;i<N;i++){
//            number = map.lastKey();
//            map.pollLastEntry();
//        }
//        System.out.println(number);
    }
}

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA]백준_2877_4와7  (0) 2021.05.03
[JAVA]백준_2846_오르막길  (0) 2021.05.03
[JAVA]백준_2660_회장뽑기  (0) 2021.04.22
[JAVA]백준_1956_운동  (0) 2021.04.21
[JAVA]백준_1389_케빈 베이컨의 6단계 법칙  (0) 2021.04.21