99클럽 코테 스터디 21일차 TIL - priority queue

수삼·2024년 11월 17일
0

코딩테스트

목록 보기
26/44

1. 필요한 변수 선언

import java.io.*;
import java.util.*;
import java.lang.*;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] arr = br.readLine().split(" ");

        int population = Integer.parseInt(arr[0]);
        int height = Integer.parseInt(arr[1]);
        int magicHammer = Integer.parseInt(arr[2]);

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

        for (int i = 0; i < population; i++) {
            pq.add(Integer.parseInt(br.readLine()));
        }

        StringBuilder rst = new StringBuilder();

2. 가장 높은 키가 센티의 키보다 작거나 1인 경우 멈춘다.

센티의 키보다 작거나 같은 경우 반으로 나누고 다시 큐에 넣어준다.

        int used = 0;
        for (int i = 0; i < magicHammer; i++) {
            if (pq.peek() < height || pq.peek() == 1) {
                break;
            } else if (pq.peek() >= height) {
                pq.add(pq.poll() / 2);
                used++;
            }
        }

        if (pq.peek() >= height) {
            rst.append("NO\n" + pq.peek());
        } else {
            rst.append("YES\n" + used);
        }
        System.out.println(rst);
    }
}

0개의 댓글