Programmers 42587 프린터

로고 이미지

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42587

나의 풀이

문제에서 주어진 구조가 FIFO 구조이기 떄문에 priorities의 값을 큐에 넣는다. 이 때 요청한 문서(location 위치에 있는 문서)는 -1값으로 넣어 요청한 문서를 구분할 수 있도록하였다.

중요도가 가장 높은 문서를 모두 인쇄하기 전까지는 중요도가 더 낮은 문서는 인쇄할 수 없다. 인쇄 작업의 중요도는 1~9로만 표현되기 때문에 각각의 중요도 별 개수가 몇개인지 기록하여 높은 숫자부터 순차적으로 인쇄하며 요청한 문서를 인쇄할 수 있을 때 까지 반복한다.

풀이 코드 : 42587 프린터

#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    int num = priorities[location];
    int exist[10] = {0,};
    queue<int> q;
    for(int i = 0;i<priorities.size();i++){
        if(i == location)
            q.push(-1);
        else
            q.push(priorities[i]);
        exist[priorities[i]]++;
    }
    int max = 9;
    while(!q.empty()){
        if(exist[max] == 0){
            max--;
        }else{
            if(q.front() == -1 ){
                if(num == max){
                    answer++;
                    break;
                }
                q.pop();
                q.push(-1);
            }
            else if(q.front() == max){
                exist[max]--;
                q.pop();
                answer++;
            }else{
                q.push(q.front());
                q.pop();
            }
        }
    }
    
    return answer;
}

채점결과

42587priter


© 2020. All rights reserved.

Powered by Hydejack v8.4.0