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();
해주어 센티를 저지했다.