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