[프로그래머스] [C++] 프린터 (queue)

2021. 4. 1. 17:54알고리즘/프로그래머스

1. 문제

코딩테스트 연습 - 프린터 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

2. priority queue

우선순위 큐를 만들고

 

대기목록의 인덱스를 증가시키면서

 

우선순위 큐랑 비교하며

 

top이랑 같지 않으면 대기 목록의 제일 뒤로 보낸다.

 

같으면 우선순위 큐를 pop한다.

 

그리고 만약 location == idx 일 경우 location을 새위치로 업데이트 시켜준다.

 

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
#include <string>
#include <vector>
#include <queue>
 
using namespace std;
 
int solution(vector<int> priorities, int location) {
    priority_queue<int> pq(priorities.begin(), priorities.end());
    int idx = 0, count = 0;
    while(true) {
        if(idx == location && pq.top() == priorities[location])
            break;
        if(idx == location) {
            location = priorities.size(); 
        }
        if(pq.top() == priorities[idx]) {
            pq.pop();
            count++;
        } 
        else 
            priorities.push_back(priorities[idx]);
        idx++;
    }
        
    return count+1;
}
cs