[프로그래머스] 프린터

Jeanine·2022년 6월 6일
0

programmers

목록 보기
2/5
post-thumbnail

💻 C++ 기반

코딩테스트 연습 - 프린터
https://programmers.co.kr/learn/courses/30/lessons/42587

✔️ 인쇄 대기목록은 queue 사용
✔️ 인쇄 대기목록의 가장 높은 중요도 체크하는 방법: 변수 따로 빼서 queue 순회하며 체크


#include <string>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    
    queue<int> waiting;
    for (int i = 0; i < priorities.size(); i++)
    {
        waiting.push(i);
    }

    int cnt = 1;
    while (1)
    {
        int front = waiting.front();
        waiting.pop();
        
        int sz = waiting.size();
        int max_priority = -1;
        for (int i = 0; i < sz; i++)
        {
            int cur = waiting.front();
            waiting.pop();
            max_priority = max(max_priority, priorities[cur]);
            waiting.push(cur);
        }
        
        if (priorities[front] < max_priority)
        {
            waiting.push(front);
        }
        else
        {
            if (front == location)
            {
                answer = cnt;
                break;
            }
            cnt++;
        }
    }
    
    return answer;
}
profile
Grow up everyday

0개의 댓글