https://school.programmers.co.kr/learn/courses/30/lessons/42628
λ΄ ν΄λ΅
λ¬Έμ μ μ ν κ·Έλλ‘ μ°μ μμ νλ₯Ό λ κ° λμ΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
μ°μ μμ ν μ€ νλλ λ΄λ¦Όμ°¨μ μ°μ μμ νλ‘ μ΅λκ°μ μμ νκΈ° μν μ©λλ‘ μ¬μ©νλ€.
λ λ€λ₯Έ νλλ μ€λ¦μ°¨μ μ°μ μμ νλ‘ μ΅μκ°μ μμ νκΈ° μν μ©λλ‘ μ¬μ©νλ€.
μ«μκ° μΆκ°λλ©΄ λ νμ μ«μλ₯Ό μΆκ°νλ€.
μ΅λκ° μμ μ, λ΄λ¦Όμ°¨μ μ°μ μμ νμμ μ«μλ₯Ό μμ νκ³ ,
μ΅μκ° μμ μ, μ€λ¦μ°¨μ μ°μ μμ νμμ μ«μλ₯Ό μμ νλ©΄ λλ€.
μ¬κΈ°μ μ€μν μ μ μ«μμ κ°μλ₯Ό μΉ΄μ΄ν ν΄μΌ νλ€λ κ²μ΄λ€.
λ ν μ€ νλμμλ§ κ°μ μμ νκΈ° λλ¬Έμ λͺ¨λ μ«μκ° μμ λμ΄λ νμλ μ¬μ ν κ°μ΄ λ¨μμλ€.
κ·Έλ¬λ―λ‘ μ«μμ κ°μλ₯Ό μΉ΄μ΄ν νλ€κ° μ«μ μΉ΄μ΄νΈκ° 0μ΄ λλ©΄ λͺ¨λ νλ₯Ό λΉμμΌ νλ€.
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
vector<int> solution(vector<string> operations) {
vector<int> answer(2, 0);
priority_queue<int, vector<int>> pq_max;
priority_queue<int, vector<int>,greater<int>>pq_min;
int num_count = 0;
for(const auto& s : operations)
{
int data = stoi(s.substr(2));
// num_countκ° 0μ΄ λλ©΄ νλ€μ λΉμ΄λ€
if(!num_count)
{
pq_max = priority_queue<int, vector<int>>();
pq_min = priority_queue<int, vector<int>, greater<int>>();
}
// μ«μ μ½μ
if(s[0] == 'I')
{
pq_max.push(data);
pq_min.push(data);
++num_count;
}
else
{
if(!num_count)
continue;
// μ΅λκ° μμ
if(1 == data)
pq_max.pop();
// μ΅μκ° μμ
else
pq_min.pop();
--num_count;
}
}
if(num_count > 0)
{
answer[0] = pq_max.top();
answer[1] = pq_min.top();
}
return answer;
}
'π₯οΈ Study Note > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] level.3 - λ¨μ μΉ΄λ©λΌ(C++) (0) | 2023.06.06 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] level.2 - μ격 μμ€ν (C++) (1) | 2023.06.05 |
[νλ‘κ·Έλλ¨Έμ€] level.3 - μ μ μΌκ°ν(C++) (0) | 2023.06.03 |
[νλ‘κ·Έλλ¨Έμ€] level.2 - μ€ν¬νΈλ¦¬(C++) (0) | 2023.06.02 |
[νλ‘κ·Έλλ¨Έμ€] level.3 - μΌκ·Ό μ§μ(C++) (0) | 2023.06.01 |