Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Algorithm

Baekjoon #1966 프린터큐 (java)

Kellyyyy 2021. 4. 14. 08:21

접근 방법

우선순위 큐를 사용하려고 했는데 그러면 중요도가 같은 문서들이 어떤 순서로 출력될지 모른다는 문제가 있다.

→ 문제에서 요구한대로 직관적으로 구현했다.

소스 코드

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

public class Main {
    static BufferedReader br;
    static StringTokenizer st;
    static int T, N, M;
    static int[] priority;
    static Queue<int[]> pq;
    static int answer;

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

        for (int i = 0; i < T; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            N = Integer.parseInt(st.nextToken());
            M = Integer.parseInt(st.nextToken());
            priority = new int[N];
            pq = new LinkedList<>();
            st = new StringTokenizer(br.readLine(), " ");
            for (int j = 0; j < N; j++) {
                priority[j] = Integer.parseInt(st.nextToken());
                pq.offer(new int[]{j, priority[j]});
            }
            answer = print(M);
            System.out.println(answer);
        }
    }

    private static int print(int x) {
        int count = 0;
        while (!pq.isEmpty()) {
            int[] nx = pq.poll();
            boolean able = true;
            for (int[] q : pq) {
                if (q[1] > nx[1]) {
                    able = false;
                }
            }
            //System.out.println("idx : " + nx[0] + " nx : " + nx[1] + " able : " + able);
            if (able) {
                count += 1;
                if (nx[0] == x) {
                    return count;
                }
            } else {
                pq.offer(nx);
            }
        }
        return 0;
    }
}

출처

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

 

1966번: 프린터 큐

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

www.acmicpc.net