본문 바로가기

Programmers/Level2

프린터

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를 정렬하여 우선순위를 순서대로 구할 수 있다.

'Programmers > Level2' 카테고리의 다른 글

카펫  (0) 2021.07.22
조이스틱  (0) 2021.07.22
큰 수 만들기  (0) 2021.07.21
짝지어 제거하기  (0) 2021.07.20
소수 찾기  (0) 2021.07.19