응애개발자
article thumbnail
728x90

문제

 

1966번: 프린터 큐

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

www.acmicpc.net


 

접근 방법

1. 문제에서 나온 방식 그대로 구현하는 문제이다.

2. 하지만 queue로 했을때는 인덱스를 알지 못하므로 LinkedList를 사용하였습니다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int T;
    private static int N,M;
    private static LinkedList<int[]> que;
    private static int count;

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        T = Integer.parseInt(br.readLine());

        for(int tc = 0 ; tc < T ; tc++){
            st = new StringTokenizer(br.readLine());

            N = Integer.parseInt(st.nextToken());
            M = Integer.parseInt(st.nextToken());

            st = new StringTokenizer(br.readLine());

            que = new LinkedList<>();
            for(int i = 0 ; i < N ; i++){
                que.add(new int[] {Integer.parseInt(st.nextToken()) , i});
            }

            process();
        }
    }

    //실행
    public static void process() {
        count = 0 ;

        while(!que.isEmpty()){
            int[] q = que.poll();
            boolean max = true;

            for(int i = 0 ; i < que.size() ; i++){
                if(q[0] < que.get(i)[0]){
                    que.add(q);
                    for(int j = 0 ; j < i ; j++){
                        que.add(que.poll());
                    }

                    max = false;
                    break;
                }
            }

            if(!max) continue;

            count++;
            if(q[1] == M){
                break;
            }
        }

        sb.append(count).append("\n");
    }


    public static void main(String[] args) throws Exception {
        input();
        System.out.println(sb);
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!