프로그래머스 42628 - 이중우선순위큐

문제 링크

생각 및 접근

  • 이중우선순위큐라고 해서 우선순위 큐를 활용해야 될 것 같았지만, 문제를 분석하다 보니 그냥 vector로 풀어도 상관없겠다는 판단이 났다.
  • operations 돌리기
    • I 숫자라면 vector에 삽입
    • D 1이라면 내림차순으로 나열해서 pop_back()
    • D -1이라면 오름차순으로 나열해서 pop_back()

코드

#include <bits/stdc++.h>
using namespace std;

vector<int> solution(vector<string> operations) {
    vector<int> q;
    for(auto o : operations){
        if(o[0] == 'I'){
            string temp = o.substr(2);
            q.push_back(stoi(temp));
        }
        else if(!q.empty() && o == "D 1"){
            if(q.size() != 1)    sort(q.begin(), q.end());
            q.pop_back();
        }
        else if(!q.empty() && o == "D -1"){
            if(q.size() != 1)    sort(q.rbegin(), q.rend());
            q.pop_back();
        }
    }

    sort(q.begin(), q.end());
    vector<int> answer;
    if(q.empty()){
        answer.push_back(0);
        answer.push_back(0);
    }
    else{
        answer.push_back(q[q.size() - 1]);
        answer.push_back(q[0]);
    }
    return answer;
}

채점 결과

+ Recent posts