반응형

문제 링크 : https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

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

www.acmicpc.net

> 풀이

큐를 활용하는 문제입니다. 가장 큰 수를 빼오기 위해서 우선순위 큐 (priority_queue)를 사용했습니다.

#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;

int main() {
        int testcase, N, M, num, count = 0;

        scanf("%d", &testcase);

        while (testcase--) {
                queue< pair<int, int> > q;
                priority_queue<int> pq;
                
                scanf("%d %d", &N, &M);
                count = 1;

                for (int i = 0; i < N; i++) {
                        scanf("%d", &num);
                        pq.push(num);
                        q.push( {num, i} );
                }

                while (!pq.empty()) {
                        pair<int, int> n1 = q.front();
                        int n2 = pq.top();

                        if (n1.first == n2) {
                                if (n1.second == M) {
                                        printf("%d\n", count);
                                        break;
                                }
                                pq.pop();
                                count++;
                        }
                        else
                                q.push(n1);
                        
                        q.pop();
                }
        }
        return 0;
}

(개발 환경 : vs code)

반응형

'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글

백준 9663 (n-Queen) / C++  (0) 2020.07.10
백준 5430 (AC) / C++  (0) 2020.07.10
백준 1874 (스택 수열) / C++  (0) 2020.07.08
백준 10816 (숫자 카드 2) / C++  (0) 2020.07.08
백준 1406 (에디터) / C++  (0) 2020.07.06

+ Recent posts