https://www.acmicpc.net/problem/1655
1655λ²: κ°μ΄λ°λ₯Ό λ§ν΄μ
첫째 μ€μλ λ°±μ€μ΄κ° μΈμΉλ μ μμ κ°μ Nμ΄ μ£Όμ΄μ§λ€. Nμ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. κ·Έ λ€μ Nμ€μ κ±Έμ³μ λ°±μ€μ΄κ° μΈμΉλ μ μκ° μ°¨λ‘λλ‘ μ£Όμ΄μ§λ€. μ μλ -1
www.acmicpc.net
μ²μμλ λ¨μνκ² μκ°ν΄μ μ λ ₯λ°μ κ°λ€μ λ§€λ² μ λ ¬νμ¬ μ€κ°κ°μ μΆλ ₯νμλλ°, κ·Έλ κ² νλκΉ μκ°μ΄κ³Όκ° λ¬λ€
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n; cin >> n;
vector<int> v;
for(int i=0;i<n;i++){
int k; cin >> k;
v.push_back(k);
sort(v.begin(), v.end());
if(i<=1) cout<<v[0];
else cout<<v[i/2];
}
return 0;
}
μκ°μ΄κ³Όκ° λμ§ μμΌλ €λ©΄ μ°μ μμνλ₯Ό μ΄μ©ν΄μΌ νλ€
μ°μ μμν(Priority Queue)
- μμμ μμλ‘ μ λ ₯λ μ°μ μμκ° μλ μμλ€μ μ μ₯νκ³ , μ°μ μμμ λ°λΌ μΆλ ₯νλ μλ£κ΅¬μ‘°
- keyμ λ°λΌ λ΄λΆ μμλ€ κ°μ μ°μ μμλ₯Ό λΆμ¬νλ€
μ΄ λ¬Έμ λ₯Ό νκΈ° μν΄μλ μ΅μν, μ΅λνμ λ§λ€κ³ , μλ κ·μΉμ λ°λΌ μμλ₯Ό μ λ ¬νλ©΄ λλ€.
- μ΅μνμ ν¬κΈ°λ μ΅λνμ ν¬κΈ°λ³΄λ€ μ»€μ§ μ μλ€
- μ΅λνμ ν¬κΈ°λ μ΅μνμ ν¬κΈ°λ³΄λ€ μ΅λ 1λ§νΌ λ ν¬λ€
- μ΅μνμ κ°λ€μ μ΅λνλ³΄λ€ ν¬λ€.
- μμ μ½μ ν, μ΅λνμ topμ΄ μ΅μνμ topλ³΄λ€ ν¬λ€λ©΄ λ κ°μ swapν΄μ€λ€
μ΄λ κ² λλ©΄ μ΅λνμ topμ΄ νμ μ€κ°κ°μ΄ λλ€.
λ¬Έμ μ λμ¨ ν μ€νΈμΌμ΄μ€λ‘ μλ₯Ό λ€μ΄ 보μ!!
μ λ ₯κ°: 1, 5, 2, 10, -99, 7, 6
1
μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 컀μΌνλ―λ‘, μ΅λνμ μ½μ νλ€
μ΅λν [1] μ΅μν [ ] μ€κ°κ° 1
5
μ΅λνμ μ½μ νλ©΄ μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 2λ§νΌ 컀μ§λ―λ‘ μ΅λνμ μ½μ λΆκ°λ₯
μ΅μνμ μ½μ νλ€
μ΅λν[1] μ΅μν[5] μ€κ°κ° 1
2
μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 컀μΌνλ―λ‘, μ΅λνμ μ½μ νλ€
μ΅λν[2,1] μ΅μν[5] μ€κ°κ° 2
10
μ΅λνμ μ½μ νλ©΄ μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 2λ§νΌ 컀μ§λ―λ‘ μ΅λνμ μ½μ λΆκ°λ₯
μ΅μνμ μ½μ νλ€
μ΅λν[2,1] μ΅μν[5,10] μ€κ°κ° 2
-99
μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 컀μΌνλ―λ‘, μ΅λνμ μ½μ νλ€
μ΅λν[2,1,-99] μ΅μν[5,10] μ€κ°κ° 2
7
μ΅λνμ μ½μ νλ©΄ μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 2λ§νΌ 컀μ§λ―λ‘ μ΅λνμ μ½μ λΆκ°λ₯
μ΅μνμ μ½μ νλ€
μ΅λν[2,1,-99] μ΅μν[5,7,10] μ€κ°κ° 2
6
μ΅λν ν¬κΈ°κ° μ΅μν ν¬κΈ°λ³΄λ€ 컀μΌνλ―λ‘, μ΅λνμ μ½μ νλ€
μ΅λν[6,2,1,-99] μ΅μν[5,7,10]
μ΅λνμ topμ΄ μ΅μνμ topλ³΄λ€ ν¬λ―λ‘ λ κ°μ λ°κΎΈμ΄μ€λ€!!
μ΅λν[5,2,1,-99] μ΅μν[6,7,10] μ€κ°κ° 5
μ½λ
#include <iostream>
#include <queue>
#include <functional>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
priority_queue<int> max_heap;
priority_queue<int, vector<int>, greater<int>> min_heap;
int n; cin>>n;
int k;
for(int i=0;i<n;i++){
cin >> k;
//μμ μ½μ
if(max_heap.size() == min_heap.size()) max_heap.push(k);
else min_heap.push(k);
//μ΅λνμ topμ΄ μ΅μνμ topλ³΄λ€ ν¬λ©΄ λ κ°μ λ°κΏμ£ΌκΈ°
if(!min_heap.empty() && max_heap.top() > min_heap.top()) {
int maxtop = max_heap.top();
int mintop = min_heap.top();
max_heap.pop(); max_heap.push(mintop);
min_heap.pop(); min_heap.push(maxtop);
}
//μ΅λνμ topμ μΆλ ₯
cout<<max_heap.top()<<"\n";
}
return 0;
}
'μκ³ λ¦¬μ¦ λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ΄μ½ν ] λ λ°°μ΄μ μμ κ΅μ²΄ (0) | 2023.02.23 |
---|---|
[μ΄μ½ν ] λ¬Έμμ΄ μ¬μ λ ¬ (0) | 2023.02.22 |
[μ΄μ½ν ] μμ€μ λμ΄νΈ (0) | 2023.02.22 |
[μ΄μ½ν ] μκ° (0) | 2023.02.22 |
[μ΄μ½ν ] μνμ’μ° (0) | 2023.02.22 |