알고리즘/프로그래머스 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;
    }
}