#문제

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

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net

 

#작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <queue> 
using namespace std;
 
int tc, m, n; 
 
int main(){
    cin>>tc;
    for(int t=0; t<tc; t++){
        cin>>n>>m;
        // 문서의 중요도 큰것부터 나오도록 저장.
        priority_queue<int> pq; 
        // 문서 번호, 중요도 저장. 
        queue<pair<intint> > q;
        
        // n개 문서의 중요도를 순서대로 입력. 
        for(int d=0; d<n; d++){
            int priority;
            cin>>priority;
            q.push(make_pair(d, priority));
            pq.push(priority);
        }
        int printnum=0;
        
        // m 문서가 몇 번째에 출력될지 찾자.
        while(!q.empty()){
            // 현재 큐의 맨 앞에 있는 문서 비교. 
            int nowdoc = q.front().first;
            int nowprio = q.front().second;
            q.pop();
            // 남은 문서 중 중요도 제일 큰것과 비교.
            // 중요도 제일 큰 문서가 현재 큐의 맨 앞에 있었다면 
            if( pq.top()==nowprio){
                printnum++;        // 프린트 
                pq.pop();        // pq에서 제거 
                if( nowdoc == m ){
                    // 현재 프린트 한 문서가 인덱스 m이라면
                    // 몇번째로 인쇄되는지 출력 
                    cout<<printnum<<'\n';
                    break;
                }
            }
            // 중요도 제일 큰 문서가 아니라면 다시 큐의 맨 뒤로 넣어준다. 
            else{
                q.push(make_pair(nowdoc, nowprio));
            }
        }
    }
    return 0;
}
cs

##

우선순위 큐를 사용하지 않고, 벡터나 배열에 중요도만 내림차순으로 정렬해서 사용해도 똑같겠군!

'BOJ' 카테고리의 다른 글

BOJ 10830번 :: 행렬 제곱  (0) 2019.12.27
BOJ 10816번 :: 숫자 카드 2  (0) 2019.12.27
BOJ 11866번 :: 조세퍼스 문제 0  (0) 2019.12.26
BOJ 17298번 :: 오큰수  (0) 2019.12.26
BOJ 1874번 :: 스택 수열  (0) 2019.12.25

+ Recent posts