본문 바로가기
알고리즘 (with. 백준 문제풀이)/Queue

백준 1966번 [프린터 큐]

by 천릉객 2023. 9. 19.
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

let [n, ...testcases] = input;

// let [n, m] = [4, 2]
// const priQ = [1, 3, 2, 4]

for (let i = 0; i < n; i++) {
    let m = Number(testcases[i * 2].split(' ')[1])
    let priQ = testcases[i * 2 + 1].split(' ').map(Number);
    let answer = 0;

    while (true) {
        let e1 = priQ.shift()

        if (e1 < Math.max(...priQ)) {
            priQ.push(e1);
            if (m == 0) { // 만약 방금 맨 뒤로 보낸게 타겟이었다면.
                m = priQ.length - 1
            } else {
                m--
            }
        } else { // 제일 큰숫자 나감
            answer++;
            if (m == 0) { // 방금 나간게 타겟이었다면.
                break;
            } else {
                m--;
            }
        }
    }

    console.log(answer)
}

Math.max(...priQ) <- 이게 되는걸 몰라서 애먹었다.

'알고리즘 (with. 백준 문제풀이) > Queue' 카테고리의 다른 글

백준 2161번 [카드1]  (0) 2023.09.18
백준 1158번 [요세푸스 문제]  (0) 2023.09.18