곽로그
[백준1966] 프린터 큐 본문
반응형
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