백준

백준 1966 - Java

으엉어엉 2024. 10. 13. 11:42
728x90

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class BJ1966 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 테스트 케이스 수
        int testCaseCount = sc.nextInt();

        for (int t = 0; t < testCaseCount; t++) {
            // 문서의 개수 N과 몇 번째 문서인지 M
            int N = sc.nextInt();
            int M = sc.nextInt();
            Deque<int[]> queue = new ArrayDeque<>();

            // 문서의 중요도를 입력받아 큐에 저장
            for (int i = 0; i < N; i++) {
                int priority = sc.nextInt();
                queue.offer(new int[]{i, priority}); // {문서 인덱스, 중요도}
            }

            int printOrder = 0; // 인쇄 순서
            while (!queue.isEmpty()) {
                int[] currentDoc = queue.poll(); // 큐의 앞 문서 꺼내기
                boolean hasHigherPriority = false;

                // 현재 문서보다 더 중요한 문서가 있는지 확인
                for (int[] doc : queue) {
                    if (doc[1] > currentDoc[1]) {
                        hasHigherPriority = true; // 더 중요한 문서가 있음
                        break;
                    }
                }

                if (hasHigherPriority) {
                    // 더 중요한 문서가 있으면 큐의 뒤로 보냄
                    queue.offer(currentDoc);
                } else {
                    // 문서 인쇄
                    printOrder++;
                    // 인쇄한 문서가 M번 문서인지 확인
                    if (currentDoc[0] == M) {
                        System.out.println(printOrder); // M번 문서의 인쇄 순서 출력
                        break;
                    }
                }
            }
        }
    }
}

 

deque을 사용하였다.  linkedlist 도 사용이 가능할 것 같은데 문제가 que 이니 만큼 que를 사용하였다.

728x90

'백준' 카테고리의 다른 글

백준 11047 - Java  (0) 2024.10.14
백준 1654 - java  (0) 2024.10.13
백준 1920 - Java  (0) 2024.10.12
백준 18110 - Java  (0) 2024.10.12
백준 1699 - Java  (0) 2024.10.05