728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/142085
import java.util.PriorityQueue;
import java.util.Collections;
class Solution {
public int solution(int n, int k, int[] enemy) {
int answer = 0;
// 막은 적들을 내림차순으로 저장
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for(int e : enemy) {
// 병사를 이용해 적을 막음
n -= e;
// 막은 적의 수를 저장 (내림차순으로 저장됨)
pq.add(e);
if(n < 0) {
// 병사를 전부 소모했다면
if(k > 0) {
// 무적권이 남았다면 지금까지 막은 적 중 가장 많은 수의 적을 무효화
int tmp = pq.poll();
n += tmp;
k--;
}
else {
// 없으면 끝난거
break;
}
}
// 스테이지 클리어
answer++;
}
return answer;
}
}
728x90
반응형
'알고리즘 > 문제 풀이 (출처: 프로그래머스)' 카테고리의 다른 글
[JAVA/BFS] 가장 먼 노드 (0) | 2024.02.23 |
---|---|
[JAVA] 과제 진행하기 (0) | 2024.02.23 |
[JAVA/DP] 연속 펄스 부분 수열의 합 (0) | 2024.02.22 |
[JAVA/BFS] 석유 시추 (0) | 2024.02.22 |
[JAVA] 마법의 엘리베이터 (0) | 2023.04.23 |