ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 Lv2 프로세스
    Computer Science/프로그래머스 2023. 9. 23. 09:10


    중요도를 기준으로 자동 정렬되는 우선순위 큐와 현재프로세스를 저장하는 큐를 비교하며 우선순위와 큐가 갖는 프로세스 순서가 일치 할 때 정답에서 구하고자하는 인덱스와 동일하다면 정답을 리턴한다.


    문제 풀이

    우선순위 큐는 프로세스가 실행 될 중요도를 저장큐는 프로세스 중요도와 인덱스를 순차적으로 저장했다.

        for(int i = 0; i < priorities.size(); ++i)
        {
            q.push({priorities[i], i});
            pq.push(priorities[i]);
        }

    프로세스가 먼저 실행 될 우선순위가 아니라면 후순위로 빼는 작업을 큐를 pop(), push()하여 구현했다.

            }else
            {
                pair<int, int> data = q.front();
                q.push(data);
                q.pop();
            }

    프로세스가 실행 될 우선순위라면 해당 프로세스를 제거하기 위해 우선순위 큐와 큐에서 pop()했다.

            if(pq.top() == q.front().first)
            {
                ++answer;
                if(q.front().second == location) break;
                pq.pop();
                q.pop();
            }else

     

    #include <vector>
    #include <queue>
    #include <iostream>
    
    using namespace std; 
    
    int solution(vector<int> priorities, int location)
    {
        int answer = 0;
        queue<pair<int, int>> q;
        priority_queue<int> pq;
        
        for(int i = 0; i < priorities.size(); ++i)
        {
            q.push({priorities[i], i});
            pq.push(priorities[i]);
        }
        
        while(1)
        {
            if(pq.top() == q.front().first)
            {
                ++answer;
                if(q.front().second == location) break;
                pq.pop();
                q.pop();
            }else
            {
                pair<int, int> data = q.front();
                q.push(data);
                q.pop();
            }
        }
        return answer;
    }

    문제를 복기 할 때 ㅜㅜ 우선순위큐에 인덱스를 저장했는데, 프로세스 실행 순서가 같으면 인덱스가 내림차순으로 정렬 되었다. 우선순위큐는 기본적으로 내림차순으로 정렬한다는 것을 기억하자.

Designed by Tistory.