본문 바로가기
BaekJoon/C++

1966 : 프린터 큐 (C++)

by GrayChoi 2021. 2. 17.
반응형

 

1966번: 프린터 큐

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

www.acmicpc.net


약간 대충대충 내맘대로 막 짠것 같은 코드

#include<iostream>
#include<algorithm>
#include<queue>

using namespace std;

bool compare(int a, int b) {
// 내림차순으로 정렬하기 위한 함수
    return a > b;
}

int main() {
    int testCase;

    cin >> testCase;

    for(int t = 0; t < testCase; t++) {
        queue<pair<int, int>> q;

        int N, M;
        cin >> N >> M;

        int arr[N]; // 중요도 배열

        for(int i = 0; i < N; i++) {
            int importance;
            cin >> importance;
            arr[i] = importance;

            q.push({i, importance});
        }

        sort(arr, arr + N, compare);
        // 중요도를 내림차순으로 정렬

        int cnt = 0;
        int pt = 0; // 중요도 순으로 프린트하기 위함

        while(!q.empty()) {
            int x, y;
            x = q.front().first;
            y = q.front().second;
        
            if(y == arr[pt]) {
                // 큐의 첫번째와 중요도가 일치하면
                q.pop();
                cnt++; // 프린트를 수행한 것이므로 카운트 증가
                pt++;
                if(x == M) {
                    // 프린트 한 것의 번호와 궁금한 것의 번호가 일치하면 중지
                    break;
                }
            } else {
                // 중요도가 낮아 프린트하지 못했다면 큐의 뒤로 다시 배치
                q.pop();
                q.push({x, y});
            }

        }

        cout << cnt << endl;

    }

    return 0;
}
반응형

'BaekJoon > C++' 카테고리의 다른 글

20551 : Sort 마스터 배지훈의 후계자 (C++)  (0) 2021.02.18
7562 : 나이트의 이동 (C++)  (0) 2021.02.17
10815 : 숫자 카드 (C++)  (0) 2021.02.17
10816 : 숫자 카드 2 (C++)  (0) 2021.02.17
2108 : 통계학 (C++)  (0) 2021.02.16

댓글