본문 바로가기

프로그래머스/힙

이중우선순위큐

728x90

programmers.co.kr/learn/courses/30/lessons/42628

 

코딩테스트 연습 - 이중우선순위큐

 

programmers.co.kr

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

vector<int> solution(vector<string> operations) {
    vector<int> answer;
    priority_queue<int>q;
    string s[2];
    int minimum =0;
    for(int i=0; i<operations.size(); i++){
        stringstream ss(operations[i]);
        ss>>s[0]>>s[1];
        if(s[0]=="I"){q.push(stoi(s[1]));}
        else{
            if(s[1]=="1"&& q.size()>0){q.pop();}
            else if(s[1]=="-1"&&q.size()>0){minimum++;}
        }
    }
    if(q.size()<=minimum){answer.push_back(0); answer.push_back(0);}
    else{
        int popsz = q.size()-minimum;
        int mx = q.top();
        for(int i=0; i<popsz-1; i++){q.pop();}
        int mn = q.top();
        answer.push_back(mx); answer.push_back(mn); 
    }
        return answer;
}

'프로그래머스 > ' 카테고리의 다른 글

야근지수  (0) 2021.02.24
디스크 컨트롤러  (0) 2021.02.14
더 맵게  (0) 2021.01.11