๋ฌธ์
์ฝ๋
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n; cin>>n;
vector<pair<int,int>>v;
priority_queue<int,vector<int>,greater<int>>pq;
for(int i=0; i<n; i++){
int start, end; cin>>start>>end;
v.push_back({start,end});
}
sort(v.begin(),v.end());
pq.push(v[0].second); //์ ค ์ฒซ์์
์ ๋๋๋ ์๊ฐ์ ๋จผ์ ์ถ๊ฐ
for(int i=1; i<n; i++){
if(v[i].first>=pq.top()){
pq.pop();
pq.push(v[i].second);
}
else pq.push(v[i].second);
}
cout<<pq.size();
}
ํ์ด
๋ฌธ์ ์ดํด ์์ฒด๋ ๊ฐ๋จํ๋ฐ ์ด๋ป๊ฒ ๊ตฌํ์ ํด์ผ ํ ์ง ๊ณ์ ๊ณ ๋ฏผ์ด ๋ง์ด ๋์์ต๋๋ค.
- ์์ ์์ ์๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋จผ์ ์ ๋ ฌํ๋ค.
- ๋ด๋ฆผ์ฐจ์(์ต์ํ)์ผ๋ก ์ฐ์ ์์ ํ๋ฅผ ์์ฑํ๋ค.
- ํ์ฌ ์์
์์์๊ฐ >= ์ฐ์ ์์ ํ์ top ๋์ฐฉ์๊ฐ์ด๋ฉด ๊ทธ ๊ฐ์์ค์์ ๊ณ์ ๋ค์ ์ ์๋ค.
- ๋ฐ๋ผ์ pq.pop() ์ ํ์ฌ ๋์ฐฉ์๊ฐ์ ๋นผ์ฃผ๊ณ
- ํ์ฌ ์์ ์ ๋์ฐฉ์๊ฐ์ ๋ค์ pq.push()ํ๋ค.
- ํ์ฌ ์์
์๊ฐ<์ฐ์ ์์ ํ์ top ๋์ฐฉ์๊ฐ์ด๋ฉด ์๋ก์ด ๊ฐ์์ค์ ์์ฑํด์ผ ํ๋ค.
- ๋ฐ๋ผ์ ๊ทธ๋ฅ pop ์์ด ํ์ฌ ์์ ์ ๋์ฐฉ์๊ฐ์ pq.push ํด์ค๋ค.
์์ ์ ์ถ๋ ฅ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
3
1 3
2 4
3 5
์ผ๋จ ์ ค ์ฒซ ์์ ์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋์ฐฉ์๊ฐ์ pq์ ๋ฃ๊ณ ๊ทธ๋ค์ ์์ ๋ถํฐ ๊ณ์ฐํฉ๋๋ค.
(2,4)๋ฅผ ๋ณผ ๊ฑด๋ฐ, ํ์ฌ ์์ ์์ ์๊ฐ 2๊ฐ pq์ 3๋ณด๋ค ์์ผ๋ฏ๋ก ๊ฐ์์ค์ด ํ๋ ๋ ํ์ํ๋ค๋ ์๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ pq์ ๋๋๋ ์๊ฐ 4๋ฅผ ์ถ๊ฐํด์ค๋๋ค.
(3,5)๋ฅผ ๋ณผ๊ฑด๋ฐ, ์์ ์๊ฐ 3์ด pq ๋์ฐฉ์๊ฐ 3๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฏ๋ก ๊ทธ ๊ฐ์์ค์์ ์ฐ๋ฌ์์ ์์ ์ ๋ค์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋๋๋ ์๊ฐ์ ๊ฐฑ์ ํด์ฃผ๊ธฐ ์ํด pq.pop() ํ pq.push() ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์์ ์ ๋ค ๋์๋ณด์์ ๋๋ ๋จ์ pq์ ์ฌ์ด์ฆ๊ฐ ๊ฐ์์ค์ ๊ฐ์๊ฐ ๋ฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 24499๋ฒ - blobyum (0) | 2022.03.23 |
---|---|
[๋ฐฑ์ค,c++] 24498๋ฒ - blobnom (0) | 2022.03.23 |
[๋ฐฑ์ค,c++] 1120๋ฒ - ๋ฌธ์์ด (0) | 2022.03.22 |
[๋ฐฑ์ค,c++] 2504๋ฒ - ๊ดํธ์ ๊ฐ (0) | 2022.03.16 |
[๋ฐฑ์ค,c++] 1748๋ฒ - ์ ์ด์ด ์ฐ๊ธฐ1 (0) | 2022.03.15 |
[๋ฐฑ์ค,c++] 1912๋ฒ - ์ฐ์ํฉ (0) | 2022.03.15 |
๋๊ธ