ν°μ€ν 리 λ·°
[baekjoon] 1655λ² : κ°μ΄λ°λ₯Ό λ§ν΄μ (C++)
ꡬλμ  2021. 9. 5. 13:32
μ΅λνκ³Ό μ΅μνμ μ΄μ©νλ©΄ μ½κ² ν μ μλ λ¬Έμ μλΉ..
κ°μ΄ λ€μ΄μ¬ λλ§λ€ μ€κ°κ°μ μΆλ ₯νκ² λλ©΄ μκ° λ³΅μ‘λκ° μ¦κ°νκ³ μ΄ λ¬Έμ λ μκ° μ νμ΄ μκΈ° λλ¬Έμ... λ€λ₯Έ λ°©λ²μ΄ νμνλ€
μ¬κΈ°μ 쑰건μ
1. μ΅μ νμ κ°λ€μ λͺ¨λ μ΅λ νλ³΄λ€ νΌ
2. μ΅λ νμ ν¬κΈ°κ° μ΅μ νμ ν¬κΈ°λ³΄λ€ 1 ν¬κ±°λ κ°λλ‘ μ μ§νλ©΄μ κ°μ λ£μ΄μΌ ν¨
3. κ°μ λ£μ΄μ€ νμ μ΅λ νκ³Ό μ΅μ νμ top κ°μ λΉκ΅ν΄ μ΅μ νμ topλ³΄λ€ μ΅λ νμ topμ΄ λ ν¬λ€λ©΄ swapν¨
arr[] = { 1, 5, 2, 10, -99, 7, 5 } ← λ°°μ΄μ΄ μ΄λ λ€λ©΄
[1 μ½μ ]
- maxH = 1
- minH
→ μΆλ ₯ : 1
[5 μ½μ ]
- maxH = 1
- minH = 5
→ μΆλ ₯ : 1
[2 μ½μ ]
- maxH = 1 2
- minH = 5
→ μΆλ ₯ : 2
[10 μ½μ ]
- maxH = 1 2
- minH = 5 10
→ μΆλ ₯ : 2
[-99 μ½μ ]
- maxH -99 1 2
- minH = 5 10
→ μΆλ ₯ : 2
[7 μ½μ ]
- maxH = -99 1 2
- minH = 5 7 10
→ μΆλ ₯ : 2
[5 μ½μ ]
- maxH = -99 1 2 5
- minH = 5 7 10
→ μΆλ ₯ : 5
λ§μ½ 맨 λ§μ§λ§μ 5κ° μλλΌ 6μ΄ μ½μ λμλ€λ©΄?
- maxH = -99 1 2 6
- minH = 5 7 10
μ΄λ κ² λμ§λ§ maxHμ topμ΄ minHμ topλ³΄λ€ ν¬κ² λλ―λ‘ swapν΄μ
- minH = -99 1 2 5
- minH = 6 7 10
→ μΆλ ₯ : 5
μ¬κΈ°μ μ΅λνκ³Ό μ΅μνμ ꡬννκΈ° μν΄ priority_queue containerμ μ΄μ©ν μ μμ
- μ°μ μμ ν ꡬν(vector, deque containerμ λΆμ¬μ μ¬μ© κ°λ₯)
- <queue ν€λ νμΌ>
νμ
priority_queue<Data Type> λ³μ μ΄λ¦
- κΈ°λ³Έ μμ±μ νμ
bool empty() const;
- λΉμ΄μμΌλ©΄ 0 λ°ν
size_type size() const;
- μμ κ°μ
const value_type & top() const;
- 맨 μ μμ λ°ν(top λ°ν)
void push(const value_type & val);
- push κΈ°λ₯
void pop();
- pop κΈ°λ₯
[μ 체μ½λ]
// BOJ 1655 κ°μ΄λ°λ₯Ό λ§ν΄μ
#include <iostream>
#include <queue>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false); // μ
μΆλ ₯ λΉ λ₯΄κ² μ²λ¦¬
    cin.tie(NULL);
    cout.tie(NULL);
    priority_queue<int> maxH; // μ΅λ ν
    priority_queue<int, vector<int>, greater<int> > minH; // μ΅μ ν
    int n, elem; // n : μ«μ κ°μ / elem : μ
λ ₯νλ μ
    cin >> n; // n λ¨Όμ  μ
λ ₯λ°μ
    for(int i = 0; i < n; i++){
        cin >> elem; // μ«μλ₯Ό νλμ© μ
λ ₯λ°μ
        if(maxH.size() == minH.size()) // μ΅λνκ³Ό μ΅μνμ ν¬κΈ° κ°μ λ
            maxH.push(elem); // μ΅λ νμ push
        else // μ΅λ νμ΄ λ ν΄ λ
            minH.push(elem); // μ΅μ νμ push
        if(!minH.empty() && !maxH.empty()){ // λ λ€ λΉμ΄μμ§ μκ³ 
            if(maxH.top() > minH.top()){ // μ΅λ νμ topμ΄ λ ν΄ λ
                int temp_max = maxH.top(); // κ°μμ κ°μ swap 
                int temp_min = minH.top(); 
                maxH.pop();
                minH.pop();
                maxH.push(temp_min);
                minH.push(temp_max);
            }
        }
        cout << maxH.top() << "\n"; // μ΅λ νμ topμ λ§€λ² μΆλ ₯ (μ€κ°κ°)
    }
}
λλ μ΄ λ¬Έμ λ₯Ό νλ©΄μ μκ°μ΄κ³Όκ° κ³μ λμ μ΄μ λ₯Ό κ³ λ―Όνλλ°
κ²°μ μ μΈ μ΄μ λ
cout << maxH.top() << endl;λ°λ‘ μ΄κ² λλ¬Έμ΄μλ€
μ€λ°κΏ λλ¬Έμ endlμ μΌμλλ° κ·Έκ²λ³΄λ€ "\n"μ μ°λκ² λ μ€ν μλκ° λΉ λ₯΄λ€.... λͺ°λμ
그리κ³
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);μ΄ μ½λλ₯Ό μ°λ©΄ μ μΆλ ₯μ λμ± λΉ¨λ¦¬ μ²λ¦¬ν μ μλ€κ³ νλ μμλμ΄μΌκ² λ€!!

'π STUDY > π baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [baekjoon] 17608λ² : λ§λκΈ° (C++) (2) | 2021.09.07 | 
|---|---|
| [baekjoon] 12605λ² : λ¨μ΄μμ λ€μ§κΈ° (C++) (0) | 2021.09.07 | 
| [baekjoon] 1158λ² : μμΈνΈμ€ λ¬Έμ  (C++) (0) | 2021.09.07 | 
| [baekjoon] 11279λ² : μ΅λ ν (C++) (0) | 2021.09.07 | 
| [baekjoon] 12865λ² : νλ²ν λ°°λ (C++) (0) | 2021.09.01 | 
- react-scripts
- λ¨Έμ λ¬λ
- νλ‘κ·Έλλ°
- Baekjoon
- machine learning
- Linux
- κΈ°κ³νμ΅
- react
- Apache
- μκ³ λ¦¬μ¦
- bitnami
- νλ‘μΈμ€
- Programming
- μ€λ₯
- λ€μ€νλ‘μΈμ€
- GIT
- error
- νμΌ μ μΆλ ₯
- SWiFT
- MySQL
- C++
- 리λ μ€
- λ°±μ€
- μ€μΉ
- PHP
- SpringBoot
- Annotation
- 9086λ²
- λ²νΌ
- C
- Total
- Today
- Yesterday
 
							 
							 
							