1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<Node> queue = new LinkedList<Node>();
// 우선순위 큐 내림차순 정렬
PriorityQueue<Integer> priQueue = new PriorityQueue<>(Collections.reverseOrder());
// 우선순위 목록 저장, queue 초기화
for (int i = 0; i < priorities.length; i++) {
priQueue.add(priorities[i]);
queue.add(new Node(i, priorities[i]));
}
int p = -1;
while (p != location) {
Node n = queue.poll();
// 우선순위가 낮은 경우
if (priQueue.peek() > n.priority) {
queue.add(n);
} else { // 우선순위 목록 1개 제거
priQueue.poll();
p = n.pos;
answer++;
}
}
return answer;
}
}
class Node {
int pos;
int priority;
public Node(int pos, int priority) {
this.pos = pos;
this.priority = priority;
}
}
|
cs |
우선순위 큐를 이용하여 가장 큰 우선순위를 구하였다.
하지만 굳이 새로 만들필요 없이, queue에 priorities를 넣은 후 priorities를 정렬하여 우선순위를 순서대로 구할 수 있다.