공부/PS (programmers)
[programmers] 프린터 / C++
happyst
2022. 5. 18. 00:35
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
int solution(vector<int> priorities, int location) {
int answer = 0, cnt = 1;
int sequence[110] = {0, }; // 각 문서가 프린트된 순서를 저장
queue <pair<int, int>> q;
priority_queue <int> pq;
for(int i=0; i<priorities.size(); i++)
{
q.push({i,priorities[i]}); // index, priority
pq.push(priorities[i]); // 중요도의 내림차순 정렬
}
while(!q.empty())
{
int cur_idx = q.front().first;
int cur_priority = q.front().second;
int top_priority = pq.top();
q.pop();
if(cur_priority >= top_priority)
{
pq.pop();
sequence[cur_idx] = cnt++;
//cout << "sequence[" << cur_idx << "] = (cnt) " << cnt << "\n";
}
else
{
q.push({cur_idx, cur_priority});
//cout << "q.push(" << cur_idx << ", " << cur_priority << ")\n";
//cout << "cnt = " << cnt << "\n";
}
}
answer = sequence[location];
return answer;
}