문제
해당 문제는 우선순위 큐를 활용해 문제를 해결했습니다.
1. 주어진 배열을 우선순위 큐에 내림차순으로 정렬합니다.
2. 우선순위에서 가장 큰 peek 값과 현재 인덱스의 값을 비교하여 일치하는 경우는 프로세스를 꺼낼 수 있기 때문에 카운트합니다.
3. 이때, 현재 인덱스 번호와 location이 일치한다면 정답처리를 진행합니다.
4. 일치하지 않는다면, peek값을 poll하여 프로세스를 꺼내줍니다.
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
PriorityQueue<Integer> pque = new PriorityQueue<Integer>(Collections.reverseOrder());
for (int i = 0; i<priorities.length; i++) {
pque.add(priorities[i]);
}
while (!pque.isEmpty()) {
for (int i = 0; i<priorities.length; i++) {
if (priorities[i] == pque.peek()) {
answer++;
if (i == location) {
return answer;
}
pque.poll();
}
}
}
return 0;
}
}
✏️ TIP
1 . 우선순위 큐를 사용하기 위해 PriorityQueue
를 활용합니다.
2 . Collections.reverseOrder()
를 활용해 내림차순 정렬을 진행합니다.
3. 우선순위 큐에 값을 추가할때는 add
, 값을 빼낼 때는 poll
을 사용합니다.
4. 우선순위 큐에 맨 앞에 값을 확인할때는 peek()
를 활용합니다.
피드백 및 개선점은 댓글을 통해 알려주세요😊