[프로그래머스] 디펜스 게임

강민승·2023년 12월 12일
0

알고리즘

목록 보기
17/19

pq를 쓴 이유 : Collections.reverseOrder()를 통해 가장 내림차순으로 정렬하기 위해

그럼 왜 정렬한건가 -> greedy문제라고 판단했고, 가장 큰 값을 무적권으로 막으면 최대한 많은 라운드를 진행할 수 있으니까.

import java.util.*;

class Solution {
    public int solution(int n, int k, int[] enemy) {
        int answer = enemy.length;
        Queue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());

        int my = n;
        int card = k;
        for (int i = 0; i < enemy.length; i++) {
            my -= enemy[i];
            pq.add(enemy[i]);

            if (my < 0) {
                if (card > 0 && !pq.isEmpty()) {
                    my += pq.poll();
                    card--;
                } else {
                    answer = i;
                    break;
                }
            }
        }

        return answer;
    }
}
profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글