코딩테스트

[프로그래머스][C++] 프린터

이쿠우우 2022. 3. 21. 21:48
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

글쓴이의 답

개인적인 풀이 임으로

이것보다 더 좋은 알고리즘은 많음...

이렇게도 풀이하는구나.. 공유하기 위해 올림...

#include <string>
#include <vector>
#include <deque>
#include <utility>
#include <iostream>

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    deque<pair<int, int>> data;    
    int num = 1;
    
    for(int i=0; i < priorities.size(); i++){
        pair<int, int> insert = make_pair(num, priorities[i]);
        data.push_back(insert);
        num++;
    }
    
    deque<pair<int, int>> result;
    
    while(0 != data.size()){
        int i=0;
        for(i=1; i < data.size(); i++){
            if(data[0].second < data[i].second){
                pair<int, int> temp = data[0];
                data.pop_front();
                data.push_back(temp);
                break;
            }
        }
        if(i == data.size()){
            pair<int, int> temp = data[0];
            result.push_back(temp);
            data.pop_front();
        }
    }
    for(int i=0; i<result.size(); i++){
        if(result[i].first == location+1){
            answer = i+1;
        }        
    }
    
    return answer;
}


꾸준히 하다보면 실력이 늘겠지..

 

반응형