반응형
문제 링크 : 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 |