[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/142085
[풀이]
단순 구현. 우선순위큐를 이용하여 가장 병사가 많은 라운드에서 무적권을 사용할 수 있도록 해준다.
[코드]
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
int answer = 0;
//준호가 몇 라운드까지 막을 수 있는지 return
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
int idx;
for(idx=0; idx<enemy.length; idx++){
n -= enemy[idx];
pq.add(enemy[idx]);
if(n<0 && k>0 && !pq.isEmpty()){
int e = pq.poll(); //무적권 사용
n += e;
k--;
}
else if(n<0 && k<=0) break;
}
answer = idx;
return answer;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level2 135807 숫자 카드 나누기 (Java) - 시뮬레이션 (0) | 2023.03.03 |
---|---|
[pro] 프로그래머스 level2 140107 점 찍기 (Java) - 시뮬레이션 (0) | 2023.03.03 |
[pro] 프로그래머스 level2 148653 마법의 엘리베이터 (Java) - 시뮬레이션 (0) | 2023.03.01 |
[pro] 프로그래머스 level2 152996 시소 짝꿍 (Java) - 구현 (0) | 2023.02.27 |
[pro] 프로그래머스 level2 154538 숫자 변환하기 (Java) - DP (0) | 2023.02.21 |