Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

main

[백준-1966번/Java] 프린터 큐 본문

Algorithm

[백준-1966번/Java] 프린터 큐

1984 2022. 11. 19. 22:23

* Queue 사용

* 테스트 케이스 마다 queue를 초기화 해주거나, queue.clear() 해줘야 한다.

import java.io.*;
import java.util.*;
import java.math.*;

public class Main {
	static Queue<Integer> printer = new LinkedList<Integer>();

	private static boolean isHighPriority(int priority) {
		for (Integer i : printer) {
			if (i > priority) {
				return false;
			}
		}
		return true;
	}

	private static void print_status() {
		for (Integer integer : printer) {
			System.out.print(integer + " ");
		}
		System.out.println();
	}

	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(System.in);
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int T = in.nextInt();

		for (int i = 0; i < T; i++) {
			int N = in.nextInt();
			int M = in.nextInt();

			for (int j = 0; j < N; j++) {
				printer.add(in.nextInt());
			}

			int count = 0;
			while (true) {

				if (isHighPriority(printer.peek())) {
					printer.poll();
					count++;
					if (M == 0) {
						break;
					} else {
						M--;
					}
				} else {
					printer.add(printer.poll());
					if (M == 0) {
						M = printer.size() - 1;
					} else {
						M--;
					}
				}
			}
			bw.write(count + "\n");
			printer.clear();
		}
		bw.flush();
	}

}
728x90

'Algorithm' 카테고리의 다른 글

[백준-2231번/Java] 분해합  (0) 2022.11.20
[백준-10815번/Java] 숫자 카드  (0) 2022.11.20
[백준-1271번/Java] 엄청난 부자2  (0) 2022.11.19
[Array-9/Java] 격자판 최대합  (0) 2022.11.19
[String-10] 가장 짧은 문자거리  (0) 2022.11.18
Comments