알고리즘/프로그래머스 LV2
디펜스 게임 : 프로그래머스 LV2
꽃요미
2025. 5. 14. 21:44
https://school.programmers.co.kr/learn/courses/30/lessons/142085
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명 : 각 라운드 마다 돌면서 남은 병사의 수와 무적권을 모두 소모하여 통과할 수 있는 라운드 수 구하기.
문제 해결 : 각 라운드 마다 pq에 값을 저장하고, pq의 크기 size가 무적권보다 많을때 한개씩 poll 하면서 병사를 소모 시켜야함.
마지막 음수가 될때 break 하고 탈출 하면 된다.
여기서 핵심은. pq의 size를 비교해서 무적권 보다 클때 poll 해야하는 것이다.
import java.io.*;
import java.util.*;
class Solution {
int answer = 0;
public int solution(int n, int k, int[] enemy) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int e : enemy) {
pq.add(e);
if(pq.size() <= k) {
answer++;
continue;
}
n -= pq.poll();
if(n < 0) break;
answer++;
}
return answer;
}
}