[99클럽 코테 스터디 20일차 TIL] 백준 2075 N번째 큰 수

말하는 감자·2024년 11월 16일
0
post-thumbnail

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

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 힙(우선순위 큐)

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

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> heap = new PriorityQueue<>(Collections.reverseOrder());

        int N = Integer.parseInt(br.readLine());
        
        for(int i=0; i<N; i++) {
        	StringTokenizer st = new StringTokenizer(br.readLine());
        	while (st.hasMoreTokens()) {
        		heap.add(Integer.parseInt(st.nextToken()));
    		}
        }

        br.close();
        
        for(int i=1; i<N; i++) {
        	heap.poll();
        }
        
        bw.write(String.valueOf(heap.peek()));

        bw.flush();

        bw.close();
    }
}

📌 오늘의 회고

2차배열의 값을 모두 힙에 넣어주고 N번째 값을 반환하면 되는 문제다.

먼저 Heap을 생성할 때 Collections.reverseOrder()를 넣어줘서 우선순위 큐에 들어오는 모든 값을 내림차순으로 정렬하게 만들었다.

PriorityQueue<Integer> heap = new PriorityQueue<>(Collections.reverseOrder());

그리고 오랜만에 StringTokenizer를 이용하여 값 하나하나를 heap에 넣어줬다.

마지막으로 N번째 값이 헤드노드가 될 수 있도록 N-1번을 heap.poll();을 해주어 없애주고 마지막 N번째 값을 heap.peek();통해 반환하여 출력해줬다.
(이 때 heap.peek(); 대신 heap.poll();을 써줘도 된다.)


자꾸 TIL 작성해놓고 올리지 않아서 작성한 TIL 개수와 푼 문제의 수가 같지 않다고 뜬다... TIL 작성하고 꼭 인증해야지ㅠㅠ
profile
나는 말하는 감자다

0개의 댓글