- toc {:toc}
ํ์ด
๋ฌธ์ ์ดํด๊ฐ ์ฝ์ฌ๋ฆฌ ๋์ง ์์ง๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ์ด๋ณด๋ฉด ๋ ์ํ ์ฑ์ ๋ฑ์๊ฐ ์ฃผ์ด์ง๊ณ , ์ด๋ค ์ง์์ A, B๋ฅผ ๋น๊ตํ์ ๋ A์ ๋ฑ์๊ฐ 1, 4 ์ด๊ณ B์ ๋ฑ์๊ฐ 2, 5 ์ธ ๊ฒฝ์ฐ B๋ ํฉ๊ฒฉํ ์ ์๋ค. ์ ๋ ฅ์ ์๋ฅ ์ฌ์ฌ ๋ฑ์, ๋ฉด์ ์ํ ๋ฑ์ ์์ผ๋ก ๋ค์ด์จ๋ค.
- ๋ ์ํ ์ฑ์ ์ ๋ชจ๋ ๋น๊ตํด์ผ ํ๋ค. โ ๋ณต์กํ๋ค.
- ํ๋๋ฅผ ๊ณ ์ ์ํค์. โ ์๋ฅ ์ฌ์ฌ ๋ฑ์๋ฅผ ์ ๋ ฌํ๋ค.
- ๋ฉด์ ์ํ์ ๋ฑ์๋ฅผ ๋น๊ตํ๋ค.
- ์ด์ค for๋ฌธ์ ์ฌ์ฉํด ์๋ฅ ์ฌ์ฌ ๋ฑ์ 1๋ฑ๋ถํฐ N๋ฑ๊น์ง ๋น๊ตํ๋ค.
๋ค์์ ์์ด๋์ด๋ฅผ ๊ฐ์ง ์ฑ ์ฝ๋๋ฅผ ๊ตฌํํ๋ค.
#include <bits/stdc++.h>
using namespace std;
bool compare(const pair<int, int>& a, const pair<int, int>& b){
return a.first < b.first;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int T, N, is_pass = 1;
pair<int, int> rank[100005];
cin >> T;
while(T--){
int res = 1;
cin >> N;
for(int i = 0; i < N; i++){
cin >> rank[i].first >> rank[i].second;
}
sort(rank, rank+N, compare);
for(int i = 1; i < N; i++){
is_pass = 1;
for(int j = 0; j < i; j++){
if(rank[i].second > rank[j].second){
is_pass = 0;
break;
}
}
if (!is_pass) continue;
else res++;
}
cout << res << '\n';
}
return 0;
}ํ์ง๋ง, ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค. N์ด 100,000๊ฐ ์ด๊ธฐ ๋๋ฌธ์ ์ด์ค for๋ฌธ์ ๋๋ฆด ๊ฒฝ์ฐ ์ต์
์ ์ํฉ์
๋๋ฌธ์ ์ด์ค for๋ฌธ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ ๋ ฌ์ ํ ์ํ์์ ๋ค์ ์๊ฐํด๋ณด์.
| ์์ 1 | ์์ 2 |
|---|---|
| 1, 4 | 1, 4 |
| 2, 3 | 2, 5 |
| 3, 2 | 3, 6 |
| 4, 1 | 4, 2 |
| 5, 5 | 5, 7 |
| 6, 1 | |
| 7, 3 |
์์ ์ ๋์์๋ ์ ๋ ฅ์ ํ ์คํธ ์ผ์ด์ค์ ๋ฐ๋ผ ๋๋ ์ ๋ ฌํ๋ค. ์์์ ์๋๋ก ์์ฐจ์ ์ผ๋ก ํ์ธํ๋ค๊ณ ์๊ฐํด๋ณด์.
- ์์ 1์ ํ์ธํด๋ณด์.
- ๋ ๋ฒ์งธ ๊ฐ์ 3์ด๊ณ , ์ด์ ๊ฐ 4์ ๋น๊ตํ์ ๋ ๋ ์๊ธฐ ๋๋ฌธ์ ํฉ๊ฒฉํ ์ ์๋ค.
- ์ธ ๋ฒ์งธ ๊ฐ์ ๋ ๋ฒ์งธ ๊ฐ๊ณผ ๋น๊ตํ์ ๋ ๋ ์๊ธฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํฉ๊ฒฉ์ด๋ค.
- ์์ 2๋ฅผ ํ์ธํด๋ณด์.
- ๋ ๋ฒ์งธ ๊ฐ์ 5์ด๊ณ ์ฒซ ๋ฒ์งธ ๊ฐ์ 4์ด๋ค. ๋ ๋ฒ์งธ ๊ฐ์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ ํฉ๊ฒฉํ์ง ๋ชปํ๋ค.
- ์ธ ๋ฒ์งธ ๊ฐ์ ๋น๊ตํด์ผ ํ๋ค. ์ด๋, ๋ ๋ฒ์งธ ๊ฐ์ด ํต๊ณผํ์ง ๋ชปํ ๊ฒฝ์ฐ ๋น๊ตํด์ผ ํ ๋์์ ์ฌ์ ํ ์ฒซ๋ฒ์งธ ๊ฐ์ด๋ค.
์์๋ฅผ ํตํด ํ์ธํ ๊ฒ์, ์๋ฅ ์ฌ์ฌ ๋ฑ์๊ฐ ๋์ ์ฌ๋์ ๋ฉด์ ๋ฑ์์ ๋น๊ตํ๋ค๋ ๊ฒ, ๋น๊ตํ์ ๋ ํฉ๊ฒฉํ๋ค๋ฉด ๋น๊ต ๋์์ด ํฉ๊ฒฉํ ์ฌ๋์ผ๋ก ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ด๋ค. ๋๋ฌธ์ ์ด์ ๋ฐ๋ผ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํด ๋น๊ต ๋์์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
#include <bits/stdc++.h>
using namespace std;
bool compare(const pair<int, int>& a, const pair<int, int>& b){
return a.first < b.first;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int T, N, is_pass = 1;
pair<int, int> rank[100005];
cin >> T;
while(T--){
int res = 1;
cin >> N;
for(int i = 0; i < N; i++){
cin >> rank[i].first >> rank[i].second;
}
sort(rank, rank+N, compare);
int idx = 0;
for(int i = 1; i < N; i++){
if(rank[i].second < rank[idx].second){
res++;
idx = i;
}
}
cout << res << '\n';
}
return 0;
}