๊ธฐ๋ณธ ๊ฐ๋
1์ฐจ ์์ง์ ์์ n๊ฐ์ ์ ๋ถ์ด ์ฃผ์ด์ก์ ๋,
x = k ์ง์ ๊ณผ ๋ง๋๋ ์๋ก ๋ค๋ฅธ ์ ๋ถ์ ์๋ ๋ช ๊ฐ์ธ์ง๋ฅผ ํ๋จํ๋
ํ๋ก๊ทธ๋จ์ ์์ฑํด๋ณด์ธ์.
๋จ, ์ฃผ์ด์ง๋ x ์ขํ๋ ๋ชจ๋ ๋ค๋ฆ์ ๊ฐ์ ํด๋ ์ข์ต๋๋ค.
๋ฌธ์ ๋ฅผ ๊ฐ์์ ์ผ๋ก ๋ํ๋ด๋ฉด 2๊ฐ๋ผ๋ ๊ฒ์ ์ฝ๊ฒ ์ ์ ์๋ค. ์ด ๊ฐ์์ฑ์ ์ปดํจํฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฝ๊ฒ ๋ํ๋ด๊ธฐ ์ํด์๋
๋ค์๊ณผ ๊ฐ์ด ์์์ ์ +1, ๋ ์ ์ -1์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
K๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ณด๋ค ์ผ์ชฝ์ ์๋ ์ ๋ค์ ์๊ฐํ์ฌ ๋ง์ฝ ๋ ์ ์ด k๋ณด๋ค ์๋ค๋ฉด k์ ๊ฒน์น์ง ์์ผ๋ฏ๋ก ์์์ ์ ๊ฐ +1 + ๋์ ์ ๊ฐ -1์ ํ๋ฏ๋ก 0์ด๋๋ค.
K๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ณด๋ค ์์์ ์ด ์ค๋ฅธ์ชฝ์ ์๋ ์ ๋ํ ๋ง์ฐฌ๊ฐ์ง์ด๋ฉฐ ๋ง์ฝ ๊ฒน์น๋ ์ ์ด ์๊ธธ ๊ฒฝ์ฐ ์์์ ์ด +1์ด๋ฏ๋ก ๊ฒน์น๋ ๊ตฌ๊ฐ +1๋ฅผ ํ ์ ์๋ค.
์ด๋ ๊ฒ ๋๋ค๋ฉด ํน์ ํ ๊ตฌ๊ฐ ๋ฐ ์ ์ ๊ฒน์น๋ ๊ตฌ๊ฐ์ ๊ฐ์๋ฅผ 2 * N(์์์ , ๋์ )์ผ๋ก ๊ณ์ฐํ ์ ์๋ค.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, chk, ans;
vector<pair<int, int>>v;
int main() {
cin>>n;
for(int i=0; i<n; i++) {
int l, r; cin>>l>>r;
v.push_back(make_pair(l, 1));
v.push_back(make_pair(r, -1));
}
sort(v.begin(), v.end());
for(auto point : v) {
chk += point.second;
ans = max(ans, chk);
}
cout<<ans;
return 0;
}
์ด๋ฅผ ์์ฉํด์ ๊ฐ์ฅ ๋ง์ด ๊ฒน์น๋ ๊ตฌ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
์์์ ์ ๋ฌด์กฐ๊ฑด +1, ๋์ ์ ๋ฌด์กฐ๊ฑด -1์ด๋ผ๋ ์ ์ ์ด์ฉํด์ ํด๋น ์ ๋ณด๋ฅผ pair vector์ ์ง์ด๋ฃ๊ณ ์ ๋ ฌํ ํ์ ์์ฐจํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๋ค.
์์ฉ1 ) ๊ตฌ๊ฐ์ ์ด ๊ฐ์
๋ชจ๋ ๊ตฌ๊ฐ์ ์ค์ ์ผ๋ก ์ฐ๊ฒฐํ๋ค๋ฉด, ๊ตฌ๊ฐ์ด ๋์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๊ตฌ๊ฐ์ด ๋์ด์ง๋ ๊ฐ์๋ฅผ ์ด์ฉํด์ ์๋ก ๋ค๋ฅธ ๊ตฌ๊ฐ์ ์๋ฅผ ๊ตฌํ ์ ์๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, chk, ans;
vector<pair<int,int>>v;
bool cmp(pair<int,int>&a, pair<int,int>&b) {
if(a.first == b.first)
return a.second > b.second;
else return a.first < b.first;
}
int main() {
cin>>n;
for(int i=0; i<n; i++){
int l, r; cin>>l>>r;
v.push_back({l, 1});
v.push_back({r, -1});
}
sort(v.begin(), v.end(), cmp);
for(int i=0; i<v.size(); i++) {
if(i==0) chk += v[i].second;
else {
chk += v[i].second;
if(chk == 0) ans += 1;
}
}
cout<<ans;
return 0;
}
chk์ ๊ฐ์ ๊ตฌ๊ฐ์ ๊ฒน์น ์ค์ ์ ์๋ฅผ ์๋ฏธํ๋ค.
์ค์ ์ ์๋ [0, ~)์ ๊ฐ์ด๊ณ , ์์ ์ ์์์ 0์ด ๋๋ ์๊ฐ์ด ์๋ก ๋ค๋ฅธ ๊ตฌ๊ฐ์ด ๋๋ ๊ฒฝ์ฐ์ด๋ค. ( ๋ฌด์กฐ๊ฑด ์๋ก ๋ค๋ฅธ ์ขํ๊ฐ ๋ค์ด์จ๋ค๋ ๊ฐ์ . ๊ฐ์ ์ขํ๊ฐ ๋ค์ด์จ๋ค๋ฉด ๋ฌธ์ ์ ์ ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง.)
๊ทธ๋ฌ๋ฏ๋ก chk๊ฐ 0์ด๋๋ ์๊ฐ ์๋ก ๋ค๋ฅธ ๊ตฌ๊ฐ์ ์๋ฅผ 1์ฉ ๋๋ ค์ฃผ๋ฉด ๋๋ค.
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 21870 (0) | 2024.07.30 |
---|---|
[์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ ] Preprocessing (1) | 2024.07.24 |
๋ฐฑ์ค 1593 (1) | 2024.07.08 |
๋ฐฑ์ค 2482 (0) | 2024.06.26 |
๋ฐฑ์ค 31846 (0) | 2024.06.24 |