프린터

ddo_h·2020년 7월 22일
0

pair queue,priority_queue 사용

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

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    
    queue<pair<int,int>> nList;
    priority_queue<int> que;
    for(int i = 0; i < priorities.size(); i++){
        nList.push(make_pair(i,priorities[i]));
        que.push(priorities[i]);
    }
    while(!nList.empty()){
        if(nList.front().second == que.top()){
            if(nList.front().first == location)
                return ++answer;
            else{
                ++answer;
                nList.pop();
                que.pop();
            }
        }else{
            nList.push(nList.front());
            nList.pop();
        }
        
    }
    return answer;
}

queue는 탐색 기능이 없음

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

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    queue<int> newList;
    for(int i = 0; i < priorities.size(); i++){
        newList.push(priorities[i]);
    }
    int listsize = newList.size();
    while(1){
        if(newList.empty()) break;
        //가장 앞에 있는 친구 꺼내기
        int curr = newList.front();
        newList.pop();
        //이 친구보다 큰 값이 있는지 찾기
        bool flag = false;//F = 없을 때, T = 있을 때
        if(curr)
        
        if(flag){//T = 있을 때
        //만약에 있으면 제일 뒤로 보내고 loc 값 변경
        //loc가 0이면 제일 마지막으로 변경
        //loc가 0이 아니면 1 감소
            newList.push(curr);
            if(location == 0) location = newList.size()-1;
            else location--;
        }else{//F = 없을 때
        //없으면 출력하고 answer+1하기
        //loc가 0이면 answer return
        //loc가 0이 아니면 1 감소
            answer++;
            if(location == 0) return answer;
            else location--;
        }
    }
    return answer;
}
*/
profile
열심히!

0개의 댓글