곽로그

[백준1966] 프린터 큐 본문

알고리즘/백준

[백준1966] 프린터 큐

일도이동 2020. 1. 12. 20:09
반응형
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
 
class Document{
    int index;
    int priority;
 
    public Document(int index, int priority) {
        this.index = index;
        this.priority = priority;
    }
 
}
 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int testCase = in.nextInt();
        for (int t = 0; t < testCase; t++) {
            int N = in.nextInt(); // 문서의 수
            int M = in.nextInt(); // 몇번째로 출력되는지 알고 싶은 현재 문서의 위치
            Queue<Document> printer = new LinkedList<Document>();
 
            for (int i = 0; i < N; i++) {
                int priority = in.nextInt();
                printer.add(new Document(i, priority));
            }
 
            int count = 0// printer에서 dequeue하는 횟수
 
            while (!printer.isEmpty()) {
        
                // printer에서 맨 앞에 있는 doc을 dequeue
                Document doc = printer.poll();
                
                // dequeue한 문서의 우선순위가 가장 높은지 확인
                boolean isFirst = true;
                Iterator<Document> ir = printer.iterator();
                while (ir.hasNext()) {
                    Document docNext = ir.next();
                    if (doc.priority <docNext.priority) {
                        isFirst = false;
                        break;
                    }
                }
 
                // dequeue한 doc의 우선순위가 가장 높으면 print(count++), 아니면 printer에 enqueue
                if (isFirst) {
                    count++;
                    if(doc.index==M) {
                        break;
                    }
                } else {
                    printer.add(doc);
                }
 
            }
            System.out.println(count);
        }
    }
}
 
cs
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1021] 회전하는 큐  (0) 2020.01.12
[백준 10866] 덱  (0) 2020.01.12
[백준 10845] 큐  (0) 2020.01.04
[백준 9012] 괄호  (0) 2019.12.29
[백준 10828] 스택  (0) 2019.12.28
Comments