πŸ’»

[λ°±μ€€] μš°μ„ μˆœμœ„ 큐 - 11279. μ΅œλŒ€ νž™ λ³Έλ¬Έ

μ•Œκ³ λ¦¬μ¦˜/λ¬Έμ œν’€μ΄ Baekjoon

[λ°±μ€€] μš°μ„ μˆœμœ„ 큐 - 11279. μ΅œλŒ€ νž™

λ˜νš¨λ‹ˆ 2020. 2. 18. 18:14

문제

널리 잘 μ•Œλ €μ§„ 자료ꡬ쑰 쀑 μ΅œλŒ€ νž™μ΄λΌλŠ” 것이 μžˆλ‹€. μ΅œλŒ€ νž™μ„ μ΄μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같은 연산을 μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

  1. 배열에 μžμ—°μˆ˜ xλ₯Ό λ„£λŠ”λ‹€.
  2. λ°°μ—΄μ—μ„œ κ°€μž₯ 큰 κ°’을 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€.

ν”„λ‘œκ·Έλž¨μ€ μ²˜μŒμ— λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ μ‹œμž‘ν•˜κ²Œ λœλ‹€.

 

μž…λ ₯

첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1≤N≤100,000)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀. λ§Œμ•½ xκ°€ μžμ—°μˆ˜λΌλ©΄ 배열에 xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0이라면 λ°°μ—΄μ—μ„œ κ°€μž₯ 큰 값을 좜λ ₯ν•˜κ³  κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•˜λŠ” κ²½μš°μ΄λ‹€. μž…λ ₯λ˜λŠ” μžμ—°μˆ˜λŠ” 2^31보닀 μž‘λ‹€.

 

좜λ ₯

μž…λ ₯μ—μ„œ 0이 주어진 회수만큼 닡을 좜λ ₯ν•œλ‹€. λ§Œμ•½ 배열이 λΉ„μ–΄ μžˆλŠ” 경우인데 κ°€μž₯ 큰 κ°’을 좜λ ₯ν•˜λΌκ³  ν•œ κ²½μš°μ—λŠ” 0을 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

예제 μž…λ ₯1

13
0
1
2
0
0
3
2
1
0
0
0
0
0

 

예제 좜λ ₯1

0
2
1
3
2
1
0
0

 

생각

라이브러리 μ¨μ„œ ν’€λ¦¬λŠ” κ°„λ‹¨ν•œ λ¬Έμ œμ§€λ§Œ ν• λ•Œ λ‹€μ‹œ μ •λ¦¬ν•˜μž.

 

* μš°μ„ μˆœμœ„ 큐의 μ‚¬μš©

priority_queue<container> pq;

push(element) : μš°μ„ μˆœμœ„ 큐에 μ›μ†Œ μΆ”κ°€

pop() : μš°μ„ μˆœμœ„ νμ—μ„œ topμ›μ†Œλ₯Ό μ‚­μ œ

top() : top에 μžˆλŠ” μ›μ†Œ λ°˜ν™˜

empty() : λΉ„μ–΄μžˆμœΌλ©΄ true, μ•„λ‹ˆλ©΄ false

size() : μš°μ„ μˆœμœ„ 큐에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” μ›μ†Œλ“€μ˜ 수λ₯Ό λ°˜ν™˜

 

μž‘μ„±ν•œ μ½”λ“œ

#include <iostream>
#include <queue>

using namespace std;

int main(int argc, const char * argv[]) {
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    priority_queue<int> pq;
    int n,x;
    
    cin >> n;
    for(int i=0; i<n; i++){
        cin >> x;
        if(x>0){
            pq.push(x);
        }else if(x==0){
            if(pq.empty()){// 배열이 λΉ„μ–΄μžˆλŠ” 경우
                cout << 0 << "\n";
            }else{
                cout << pq.top() << "\n";
                pq.pop();
            }
        }
    }
}

λ°˜μ‘ν˜•
Comments