https://school.programmers.co.kr/learn/courses/30/lessons/142085
나의풀이
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
//n:병사
//k:무적권
//enemy: 매 라운드별 적의 수
int answer = 0;
PriorityQueue<Integer> q = new PriorityQueue<>(Collections.reverseOrder());//최대힙
for(int e: enemy){
if(n >= e){//막을수 있는경우
n-=e;
answer++;
q.add(e);
}else{//막을 병사가 없는경우
if(k>0){//무적권이 있으면 무적권 사용
k--;
if(q.peek() != null){
if(q.peek()>=e){
n+=q.poll() ; //지나온 라운드중 가장 많은 적이 있을때 사용.
n-=e;
q.add(e);
}
}
answer++;
}else{//무적권이 없으면 끝
break;
}
}
}
return answer;
}
}
'코테풀이' 카테고리의 다른 글
[프로그래머스] 리코쳇 로봇 java 풀이 (LEVEL2) (0) | 2023.07.02 |
---|---|
[프로그래머스] 숫자 카드 나누기 java 풀이(LEVEL2) (0) | 2023.06.25 |
[프로그래머스] 행렬 테두리 회전하기 java 풀이( LEVEL2 ) (0) | 2023.06.14 |
[프로그래머스] 시소 짝꿍 java 풀이(LEVEL2) (0) | 2023.06.14 |
[프로그래머스] [1차] 뉴스 클러스터링 java 풀이( LEVEL2 ) (0) | 2023.06.07 |