문제
https://school.programmers.co.kr/learn/courses/30/lessons/142085?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
// 무적권의 수가 적 배열 길이보다 클 때
if(k>enemy.length){
return enemy.length;
}
int answer = k-1;
PriorityQueue<Integer> pq=new PriorityQueue<>();
// 무적권의 길이만큼은 무조건 막을 수 있으므로
for(int i=0; i<k; i++){
pq.add(enemy[i]);
}
for(int i=k; i<enemy.length; i++){
// 한개씩 추가하면서
pq.add(enemy[i]);
// 가장 작은 값을 제거해주고
n-=pq.poll();
// 남아있는 병사 수가 0보다 작아지면 break
if(n<0){
break;
}
answer=i;
}
return answer+1;
}
}
'문제풀이 > 그리디' 카테고리의 다른 글
[JAVA] [그리디] Pro 마법의 엘리베이터 (0) | 2023.07.10 |
---|---|
[JAVA] [그리디] 백준 1339 단어수학 (0) | 2023.06.19 |
[파이썬] [그리디] 백준 1715 카드 정렬하기 (0) | 2023.04.10 |
[파이썬] [그리디] 백준 17615 볼 모으기 (0) | 2023.03.02 |
[파이썬] [그리디] 백준 2138 전구와 스위치 (0) | 2023.02.10 |