https://school.programmers.co.kr/learn/courses/30/lessons/138477 명예의 전당(1)
👀 핵심 개념
추가되는 값의 우선순위를 계속 정해줘야합니다. score에서 값이 추가됨에 따라 명예의 전당 순위가 바뀌고 여기서 마지막 순위가 발표점수에 추가됩니다. 그래서 정렬 메서드를 계속 사용해서 순위를 정할 수 있지만 PriorityQueue를 사용하면 더 편하게 우선순위를 관리할 수 있습니다.
PriorityQueue란?
일반적인 큐와 달리 삽입 순서와 상관없이 우선순위가 높은 데이터가 먼저 나가는 자료구조
PriorityQueue 사용 방법
일반적인 큐와 메서드는 똑같다
// 기본형: 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>();
// 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());
코드
import java.util.PriorityQueue;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int i = 0; i < score.length; i++) {
queue.add(score[i]);
if (queue.size() > k) {
queue.poll();
}
answer[i] = queue.peek();
}
return answer;
}
}