본문 바로가기
Problem Solving/Baekjoon

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

by graycode 2022. 6. 20.

 문제 링크

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int t = Integer.parseInt(br.readLine());
		for (int i = 0; i < t; i++) {
			st = new StringTokenizer(br.readLine());
			int n = Integer.parseInt(st.nextToken());
			int m = Integer.parseInt(st.nextToken());

			st = new StringTokenizer(br.readLine());
			Queue<int[]> q = new LinkedList<>();
			for (int j = 0; j < n; j++)
				q.offer(new int[] { j, Integer.parseInt(st.nextToken()) });

			int cnt = 0;
			while (!q.isEmpty()) {
				int[] tmp = q.poll();
				boolean chk = true;

				for (int[] comp : q) {
					if (tmp[1] < comp[1]) {
						chk = false;
						break;
					}
				}

				if (chk) {
					cnt++;
					if (tmp[0] == m)
						break;
				} else
					q.offer(tmp);
			}

			bw.write(cnt + "\n");
		}

		bw.flush();
	}

}

댓글