문제 링크 : https://www.acmicpc.net/problem/1931
그리디 알고리즘을 활용해 풀 수 있습니다.
코드
#include <cstdio>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
bool sortbysec(const pair<int,int> &a, const pair<int,int> &b) {
return (a.second < b.second);
}
int main() {
int N, i, n1, n2, min, cnt = 0;
scanf("%d", &N);
vector <pair <int, int> > v;
for (i = 0; i < N; i++) {
scanf("%d %d", &n1, &n2);
v.push_back(make_pair(n1, n2));
}
sort(v.begin(), v.end());
sort(v.begin(), v.end(), sortbysec);
min = v[0].second;
cnt++;
for (i = 1; i < N; i++) {
if (v[i].first >= min) {
min = v[i].second;
cnt++;
}
}
printf("%d\n", cnt);
return 0;
}
'알고리즘 문제' 카테고리의 다른 글
[알고리즘 문제/C++]백준 2212번 : 센서 (0) | 2021.01.15 |
---|---|
[알고리즘 문제/C++]백준 2178번 : 미로 탐색 (0) | 2021.01.15 |
[알고리즘 문제/C++]백준 1743번 : 음식물 피하기 (0) | 2021.01.10 |
[알고리즘 문제/C++]백준 1700번 : 멀티탭 스케줄링 (0) | 2021.01.10 |
[알고리즘 문제/C++]백준 1463번 : 1로 만들기 (0) | 2021.01.10 |