코드 흐름
- 만나는 모든 적의 수가 담긴 enemy 배열에서 만나는 모든 적의 수를 우선 뺀다.
- 뺀 적의 수를 PriorityQueue<>(Collection.reverseOrder()); 를 통해 내림차순으로 정렬되는 pq에 담는다.
- 혹여 무적권 찬스가 남아있고 현재 나의 아군이 - 상태라면 while문으로 반복하여 내아군이 +상태가 되거나 chance가 0이 될때까지 반복하는 반복문을 들어간다.
- 여태 만났던 모든 라운드 중에서 수가 가장 많았던 적군의 수를 pq.poll로 불러내어 그라운드를 무적권으로 방어하고
내아군을 그만큼 다시 살린다. - 만약 내아군이 아직도 -상태에다가 무적권 찬스가 남아있다면 이 조건을 해제할때까지 위과정을 반복한다.
- 만약 아군이 +상태라면 다음 라운드를 진행하고 answer을 증가시키고 아니라면 게임을 break 한다.
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
int answer = 0, result = n, chance = k;
Queue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int enemyCount : enemy){
result-=enemyCount;
pq.add(enemyCount);
while(result < 0 && chance > 0){
if(!pq.isEmpty()){
result += pq.poll();
chance--;
}
}
if(result<0)
break;
answer++;
}
return answer;
}
}
PriorityQueue<>(Collections.reverseOrder());
- 내림차순으로 정렬하는 Queue
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 더 맵게 (1) | 2024.07.10 |
---|---|
Lv 2. 주식가격 (0) | 2024.07.09 |
Lv 2. 땅따먹기 (0) | 2024.07.05 |
Lv 2. 롤케이크 자르기 (0) | 2024.07.04 |
Lv 2. 뒤에있는 큰수 찾기 (0) | 2024.07.02 |