이중우선순위큐(오답)

고장난·2021년 6월 13일
0

코딩스터디(오답)

목록 보기
5/9
#include <string>
#include <vector>
#include <queue>
using namespace std;

vector<int> solution(vector<string> operations) {
    vector<int> answer;
    priority_queue<int,vector<int>,greater<int>> upup;
    priority_queue<int,vector<int>,less<int>> dodo;
    queue<int> mid;
    string temp;
    int k=0,d=0;
    for(int i=0;i<operations.size();i++){
        if(operations[i][0]=='I'){
            temp=operations[i].substr(2);
            upup.push(stoi(temp));
            dodo.push(stoi(temp));
            mid.push(stoi(temp));
            k++;
        }
        else if(operations[i]=="D 1"){
            if(mid.empty()==1){continue;}
            dodo.pop();
            mid.pop();
            d++;
        }
        else {
            if(mid.empty()==1){continue;}
            upup.pop();
            mid.pop();
            d++;
        }
    }
    
    if(k==d){answer.push_back(0);
             answer.push_back(0);
           }
    else{
        answer.push_back(dodo.top());
        answer.push_back(upup.top());
    }
    return answer;
}

입력값 〉 ["I 4", "I 3", "I 2", "I 1", "D 1", "D 1", "D -1", "D -1", "I 5", "I 6"]
기댓값 〉 [6, 5]
실행 결과 〉 실행한 결괏값 [6,3]이(가) 기댓값 [6,5]와(과) 다릅니다.

profile
훈련중

0개의 댓글