ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 프린터 큐
    Algorithm/Java 2024. 10. 17. 10:37

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


    - 정답 코드

    import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int T = Integer.parseInt(br.readLine()); // 3
            StringTokenizer st;
    
            for(int i = 0; i < T; i++) {
                st = new StringTokenizer(br.readLine()); // 4 2
                int N = Integer.parseInt(st.nextToken()); // 4
                int M = Integer.parseInt(st.nextToken()); // 2번째 문서가 몇번째로 출력되는지
    
                Queue<int[]> queue = new LinkedList<int[]>(); // 배열 형태 큐
                st = new StringTokenizer(br.readLine()); // 1 2 3 4
    
                for(int j = 0; j < N; j++) {
                    int num = Integer.parseInt(st.nextToken()); // 1
                    queue.add(new int[]{j, num}); // [문서의 위치, 중요도] 형태로 저장
                } // queue = [[0, 1], [1, 2], [2, 3], [3, 4]]
    
                int cnt = 0;
                while(true) {
                    int[] a = queue.poll(); // a = [0,1]
                    boolean check = true; // 중요도가 높은 것 있는지 여부
    
                    for(int[] q : queue) { // queue = [[1, 2], [2, 3], [3, 4]]
                        // q가 [1,2]일 때
                        if(q[1] > a[1]) { // q[1] = 2 > a[1] = 1
                            check = false;
                            break;
                        }
                    }
    
                    if(check) {
                        cnt++;
                        if(a[0] == M) break;
                    }else {
                        queue.add(a); // 큐에 다시 추가
                        // queue: [(1, 2), (2, 3), (3, 4), (0, 1)]
                    }
                }
    
                System.out.println(cnt);
            }
        }
    }
    반응형

    'Algorithm > Java' 카테고리의 다른 글

    [백준/JAVA] 쇠막대기  (0) 2024.10.19
    [백준/JAVA] 스택 수열  (0) 2024.10.19
    [백준/JAVA] 후위 표기식2  (0) 2024.10.17
    [프로그래머스/JAVA] 큰 수 만들기  (0) 2024.10.16
    [프로그래머스/JAVA] 구명보트  (0) 2024.10.16
Designed by Tistory.