๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] Lv.3 : ์ด์ค‘์šฐ์„ ์ˆœ์œ„ํ

by xxilliant 2023. 9. 17.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋‹ค์Œ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์–ด์ˆ˜์‹  ํƒ‘(๋†’์ด)
I ์ˆซ์ž ํ์— ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
D 1 ํ์—์„œ ์ตœ๋Œ“๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
D -1 ํ์—์„œ ์ตœ์†Ÿ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ํ•  ์—ฐ์‚ฐ operations๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด [0,0] ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด [์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’]์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ
  • operations๋Š” ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ 1,000,000 ์ดํ•˜์ธ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • operations์˜ ์›์†Œ๋Š” ํ๊ฐ€ ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • ์›์†Œ๋Š” “๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ” ํ˜•์‹์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.- ์ตœ๋Œ“๊ฐ’/์ตœ์†Ÿ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์—์„œ ์ตœ๋Œ“๊ฐ’/์ตœ์†Ÿ๊ฐ’์ด ๋‘˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ, ํ•˜๋‚˜๋งŒ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๋นˆ ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ผ๋Š” ์—ฐ์‚ฐ์ด ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, ํ•ด๋‹น ์—ฐ์‚ฐ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฝค ์–ด๋ ต๋‹ค!!

์ฒ˜์Œ์— 2, 6๋ฒˆ์„ ํ†ต๊ณผ๋ชปํ•ด์„œ ํ—ค๋ฉจ๋Š”๋ฐ ๊ฒฐ๊ตญ ๊ณ ์ณค์Œ ใ…‹ใ…‹

ํ๋Š” ์›์†Œ ํƒ์ƒ‰์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ, ์ตœ๋Œ“๊ฐ’ ์‚ญ์ œ๋Š” pop์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ตœ์†Ÿ๊ฐ’ ์‚ญ์ œ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ท

 

 

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ, D 1 ์ผ๋•Œ๋Š” ๊ทธ๋ƒฅ popํ•ด์ฃผ๊ณ 

D -1 ์ผ๋•Œ๋Š” ์‚ฌ์ด์ฆˆ๊ฐ€ ์žˆ์„๋•Œ ๋ˆ„์ ๊ฐ’์„ ์‚ญ์ œํ•ด์คฌ๋Š”๋ฐ

์ฒ˜์Œ์—๋Š” ํ˜„์žฌ ํ ์‚ฌ์ด์ฆˆ(nowSize)๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  "D 1" pop์„ ์ง„ํ–‰ํ•ด์„œ ๋ชจ์ˆœ์ด ์ƒ๊ธด ๊ฒƒ ๊ฐ™์•˜๋‹ค!!

 

์ด๊ฑธ ๊ณ ์ณ์ฃผ๋‹ˆ ๋‹ค ๋งž์•˜์Šต๋‹ˆ๋‹ค ^-^

 

 

 

๋‚˜์˜ ํ’€์ด

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

vector<int> solution(vector<string> operations) {
    vector<int> answer;
    priority_queue<int> pq;
    int minDelete = 0;
    int nowSize = 0;
    for(int i=0; i<operations.size(); ++i){
        if(operations[i]=="D 1"){
            if(nowSize>0) {
                pq.pop();
                nowSize--;
            }
        }
        if(operations[i]=="D -1"){
            if(nowSize>0) {
                minDelete++;
                nowSize--;
            }
        }
        if(operations[i][0]=='I'){
            operations[i].replace(0,2,""); // ์ˆซ์ž๋งŒ ๋‚จ๊น€
            int num = stoi(operations[i]);
            pq.push(num);
            nowSize++;
        }
    }
    if(nowSize==0 || nowSize <= minDelete) {
        answer.push_back(0);
        answer.push_back(0);
    }
    else {
        int pqtop = pq.top();
        while(pq.size()>minDelete+1) {
            cout << pq.top()<<" ";
            pq.pop();
        }
        answer.push_back(pqtop);
        answer.push_back(pq.top());
    }
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•