99클럽 코테 스터디 20일차 TIL + 힙

2024. 11. 16. 16:11Algorithm Problem Solving

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

1. 알고리즘! 생각해보자

우선순위큐는 기본적으로 오름차순으로 정렬이 된다.
N번째 큰 수를 찾아야하니까 내림차순으로 정렬이 되면 편할 것이다.
1) 내림차순 정렬되는 priority queue 생성
2) queue.add()
3) N-1 만큼 queue.remove()
4) N번째 숫자를 queue.poll()

2. 해결 코드

import java.util.*;
import java.io.*;
public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
		StringTokenizer st;
		
		int N = Integer.parseInt(br.readLine());
		
		for(int i=0;i<N;i++) {
			st = new StringTokenizer(br.readLine());
			for(int j=0;j<N;j++) {
				pq.add(Integer.parseInt(st.nextToken()));
			}
		}
		
		for(int i=0;i<N-1;i++) {
			pq.remove();
		}
		bw.write(pq.poll()+"");
		bw.flush();
		bw.close();
	}
}

3. 레퍼런스

 

[백준] 2075번 : N번째 큰 수 - JAVA

알고리즘 분류 : 자료 구조, 정렬, 우선순위 큐 || 실버2

velog.io