Dazzling 개발 노트

[백준] 1966 -프린터 큐 (Java) 본문

Algorithm/백준

[백준] 1966 -프린터 큐 (Java)

dj._.dazzling 2024. 3. 28. 09:30

[백준] 1966 -프린터 큐 (Java)

문제

https://www.acmicpc.net/problem/1966

풀이/후기

예전에 풀었던 문제인데, 이번에 스터디 하면서 다시 풀게 됐다.

우선순위 큐를 사용해서 푸는 문제 같은데, 난 이번에 그냥 구현으로 풀었다.
코드가 굉장히 더럽다..ㅎ

코드

package src.Implementation;

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

public class Problem1966 {

    static int T, N, M;

    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

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

        while (T-- > 0){
            StringTokenizer str = new StringTokenizer(br.readLine());
            N = Integer.parseInt(str.nextToken());
            M = Integer.parseInt(str.nextToken());

            int[] arr = new int[N]; //우선순위를 저장
            Queue<Integer> q = new LinkedList<>();

            str = new StringTokenizer(br.readLine());
            for (int i=0; i<N; i++){
                arr[i] = Integer.parseInt(str.nextToken());
                q.add(i);
            }

            func(arr, q);
        }
    }

    static void func(int[] arr, Queue<Integer> q){

        int cnt = 1;
        int[] visited = new int[arr.length];

        while (!q.isEmpty()){
            int cur = q.poll();
            int pir = arr[cur];


            boolean flag = true;
            for (int i=0; i<N; i++){
                //우선순위가 더 높은 것이 있다면
                if (i != cur && pir < arr[i]){
                    flag = false;
                    break;
                }
            }

            if (flag){
                arr[cur] = 0;
                visited[cur] = cnt++;
            } else {
                q.add(cur);
            }
        }

        System.out.println(visited[M]);
    }


}

Commit

https://github.com/allrightDJ0108/CodingTestStudy/commit/b3d9ed05dc64cee7766a5f17115100963e8abff2

참고

 

 

3월28일