프로세스 queue, priority queue

magicdrill·2025년 3월 10일
0

프로세스 queue, priority queue

priortyqueue만 사용해서 해보려 했는데, priority queue는 값을 기준으로 자동 정렬을 해 주지만, 그로 인해 저장순서 또한 자동으로 정렬되어 문제를 풀이하기 위해 queue를 함께 사용한다.
아니면 내가 못한 걸 수도 있고.

#include <string>
#include <vector>
#include <queue>
#include <iostream>

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    priority_queue<int> pq;
    queue <pair<int, int>> q;
    int i;
    
    for(i = 0; i < priorities.size(); i++){
        pq.push(priorities[i]);
        q.push({i, priorities[i]});
    }
    
    while(!q.empty()){
        if(q.front().second == pq.top() && q.front().first == location){//찾고나 하는 인덱스를 찾은 경우
            cout << q.front().first << "의 우선순위 : " << pq.top()<< "\n";
            answer++;
            break;
        }
        else if(q.front().second == pq.top()){
            cout << "큐 제거 : " << q.front().first << "의 우선순위 : " << pq.top()<< "\n";
            pq.pop();
            q.pop();
            answer++;
        }
        else{
            cout << "현재 pq의 우선순위 : " << pq.top() << "\n";
            cout << "큐 뒤에 추가 : " << q.front().first << "의 우선순위 : " << q.front().second << "\n";
            q.push(q.front());
            q.pop();
        }
    }
    
    return answer;
}

0개의 댓글