[99클럽 코테 스터디 21일차 TIL] 백준 19638 센티와 마법의 뿅망치

0
post-thumbnail

99클럽 코테 스터디 21일차 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());

        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int N = Integer.parseInt(st.nextToken());
        int H = Integer.parseInt(st.nextToken());
        int T = Integer.parseInt(st.nextToken());
        int count = 0;
        
        for(int i=0; i<N; i++) {
        	heap.add(Integer.parseInt(br.readLine()));
        }
        
        for(int i=0; i<T; i++) {
        	if(heap.peek() == 1 || heap.peek() < H) {
        		break;
        	} else if(heap.peek() >= H) {
        		heap.add(heap.poll() / 2);
        		count++;
        	}
        }
        
        if(heap.peek() < H) {bw.write("YES\n" + count);}
        else {bw.write("NO\n" + heap.peek());}

        br.close();
        
        bw.flush();

        bw.close();
    }
}

📌 오늘의 회고

자기가 가장 키가 커야하는 욕심쟁이 센티의 문제!
센티가 제한된 숫자만큼 누군가의 키를 반띵할 수 있는데 자기가 왕이 될 상인지 묻는 문제다.

Heap에 넣어서 숫자가 큰 순서대로 정렬을 하고 가장 큰 놈의 키를 반타작(?)내면 된다. 근데 가장 큰놈이 1이거나 센티보다 작다면 뿅망치를 함부로 못놀리게 바로 break();해주어 센티를 저지했다.

profile
나는 말하는 감자다

0개의 댓글