찬스를 사용할 경우 현재 가지고 있는 병사를 그대로 유지할 수 있음으로
디펜스 중 적의 인원이 최대일 때 사용하는 것이, 병사를 유지할 수 있는 최대 방법이다
남은 병사가 적보다 작을때 까지 싸우고
작을 경우 찬스를 사용해 이전에 싸웠던 적의 최대 인원 수 많음 복원한다.
public int solution(int n, int k, int[] enemy) {
Queue<Integer> biggestEnemy = new PriorityQueue<>(Collections.reverseOrder());
int answer = 0;
int lastSoldier = n;
int chance = k;
for (int i = 0; i < enemy.length; i++) {
biggestEnemy.add(enemy[i]);
lastSoldier -= enemy[i];
if(lastSoldier < 0){
while(chance > 0 && lastSoldier < 0){
Integer poll = biggestEnemy.poll();
lastSoldier += poll;
chance--;
}
if(lastSoldier < 0) break;
}
answer = i+1;
}
return answer;
}