- Union-Find
- ๋นํธ๋ง์คํน
- LCs
- go
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ์นด์นด์ค ์ฝํ
- js
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด๋ถํ์
- C++
- BFS
- ๋ฐฑ์ค
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ์น๋ฆฐ์ด
- DP
- ์นด์นด์ค2021
- ์์ฝ๋
- nestjs
- ์ํฐ๋
- ์ฌ๊ท
- Python
- golang
- ๋นํธ๋งต
- DFS
- ํธ๋ฆฌ
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ๋ค์ต์คํธ๋ผ
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- Today
- Total
Hello Ocean! ๐ผ
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ์ด์ค์ฐ์ ์์ํ ๋ณธ๋ฌธ
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/42628
์ด์ค ์ฐ์ ์์ ํ๋ ๋ค์ ์ฐ์ฐ์ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค.
๋ช ๋ น์ด | ์ค๋ช |
I ์ซ์ | ํ์ ์ฃผ์ด์ง ์ซ์๋ฅผ ์ฝ์ ํฉ๋๋ค. |
D 1 | ํ์์ ์ต๋๊ฐ์ ์ญ์ ํฉ๋๋ค. |
D -1 | ํ์์ ์ต์๊ฐ์ ์ญ์ ํฉ๋๋ค. |
์ด์ค ์ฐ์ ์์ ํ๊ฐ ํ ์ฐ์ฐ operations๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
๋ชจ๋ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ํ ํ๊ฐ ๋น์ด์์ผ๋ฉด [0,0] ๋น์ด์์ง ์์ผ๋ฉด [์ต๋๊ฐ, ์ต์๊ฐ]์ return ํ๋๋ก solution ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
์ ํ์ฌํญ
- operations๋ ๊ธธ์ด๊ฐ 1 ์ด์ 1,000,000 ์ดํ์ธ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋๋ค.
- operations์ ์์๋ ํ๊ฐ ์ํํ ์ฐ์ฐ์ ๋ํ๋
๋๋ค.
- ์์๋ “๋ช ๋ น์ด ๋ฐ์ดํฐ” ํ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.- ์ต๋๊ฐ/์ต์๊ฐ์ ์ญ์ ํ๋ ์ฐ์ฐ์์ ์ต๋๊ฐ/์ต์๊ฐ์ด ๋ ์ด์์ธ ๊ฒฝ์ฐ, ํ๋๋ง ์ญ์ ํฉ๋๋ค.
- ๋น ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ผ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ํด๋น ์ฐ์ฐ์ ๋ฌด์ํฉ๋๋ค.
ํ์ด
C++ STL์ Priority Queue๋ฅผ ์ด์ฉํ์๋ค.
๋ค๋ง, ๋ด๋ฆผ์ฐจ์์ ํ(minQ)์ ์ค๋ฆ์ฐจ์์ ํ(maxQ) ๋๊ฐ๋ฅผ ์ด์ฉํ๋ ๊ณผ์ ์์ minQ์์ popํ ์์๋ฅผ maxQ์์๋ ์ง์ธ ์ ์๊ธฐ ๋๋ฌธ์, count๋ณ์๋ฅผ ๋ฐ๋ก ์ด์ฉํ์๋ค.
ํ์ insertํ ๋ count++
maxQ or minQ์์ popํ ๋ count--
count == 0 ์ด ๋๋ฉด, minQ, maxQ๋ฅผ ๋ชจ๋ ์ด๊ธฐํํด์ฃผ์๋ค.
์ฝ๋
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
int count = 0;
priority_queue<int, vector<int>, greater<int>> minQ;
priority_queue<int, vector<int>, less<int>> maxQ;
void operation(string op) {
if (op[0] == 'I') {
string num = op.substr(2);
int n = stoi(num);
maxQ.push(n);
minQ.push(n);
count++;
}
if (op[0] == 'D') {
if (count <= 0) {
return;
}
if (op[2] == '1') { // ์ต๋๊ฐ ์ญ์
maxQ.pop();
count--;
}
else { // ์ต์๊ฐ ์ญ์
minQ.pop();
count--;
}
if (count == 0) {
minQ= priority_queue<int, vector<int>, greater<int>>();
maxQ = priority_queue<int, vector<int>, less<int>>();
}
}
}
vector<int> solution(vector<string> operations) {
vector<int> answer;
for (string op: operations) {
operation(op);
}
if (count == 0) {
return {0,0};
}
else {
return {maxQ.top(), minQ.top()};
}
}
๊ฒฐ๊ณผ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๊ฒ์ (0) | 2022.03.29 |
---|---|
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ (0) | 2022.03.01 |
[go/ํ๋ก๊ทธ๋๋จธ์ค] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2022.02.08 |
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ๊ฒฝ์ฃผ๋ก ๊ฑด์ค (2020 ์นด์นด์ค ์ธํด์ญ) (0) | 2022.01.18 |
[C++/ํ๋ก๊ทธ๋๋จธ์ค] ๋จ์ด ๋ณํ (0) | 2022.01.12 |