문제 설명
준호는 요즘 디펜스 게임에 푹 빠져 있습니다. 디펜스 게임은 준호가 보유한 병사 n명으로 연속되는 적의 공격을 순서대로 막는 게임입니다. 디펜스 게임은 다음과 같은 규칙으로 진행됩니다.
준호가 처음 가지고 있는 병사의 수 n, 사용 가능한 무적권의 횟수 k, 매 라운드마다 공격해오는 적의 수가 순서대로 담긴 정수 배열 enemy가 매개변수로 주어집니다. 준호가 몇 라운드까지 막을 수 있는지 return 하도록 solution 함수를 완성해주세요.
큐를 사용할줄 안다면 그 이후는 구현만 잘하면 된다
1.배열을 순서대로 받아서 total에 집어넣는다.
2. 만약 total의 값이 병사의 수(n)보다 크다면 무적권을 사용한다.
3. 무적권도 사용할수없고 total의 값이 n보다 크다면 배열순회를 중지한다.
코드
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
int answer = 0;
int total=0;
for(int e:enemy){
total+=e;
queue.add(e);
if(k>0&&total>n){
total-=queue.poll();;
k--;
}
if(k==0&&total>n) break;
answer++;
}
return answer;
}
}