https://school.programmers.co.kr/learn/courses/30/lessons/142085
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
라운드 중에서 가능한 효율적으로 무적권을 활용하여 방어를 할 수 있는 라운드를 구하는 문제
import java.util.PriorityQueue; class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; PriorityQueue<Integer> pq = new PriorityQueue<>(); for (int i = 0; i < enemy.length; i++) { pq.add(enemy[i]); if (pq.size() > k) { if (!pq.isEmpty()) { n -= pq.poll(); } } if (n < 0) { answer = i; break; } } if (answer == 0) answer = enemy.length; return answer; } }
먼저 pq에 라운드를 진행할 때마다 enemy배열의 내용을 넣어주었다
그러다가 k보다 pq의 사이즈가 커질 때 pq에서 가장 낮을 첫 번째 내용물을 꺼내서 n에 빼주었다
이러다가 n이 0보다 작아질때 정답을 현재 라운드(i)로 하여 정답을 출력하였다
만약 n이 0이 안되었을때는 모든 라운드를 클리어했을 테니 정답을 enemy 배열의 길이로 하여 정답을 출력하였다
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 마법의 엘리베이터 (0) | 2024.03.18 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 테이블 해시 함수 (0) | 2024.03.11 |
[프로그래머스][JAVA]Lv. 2 - 점 찍기 (0) | 2024.02.19 |
[프로그래머스][JAVA]Lv. 2 - 귤 고르기 (0) | 2024.02.19 |
[프로그래머스][JAVA]Lv. 2 - 숫자 카드 나누기 (0) | 2024.01.31 |