문제의 핵심은 최대한 중복이 많이 되는 구간에 단속카메라를 놓아야 최소로 놓을 수 있다는 점이다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> routes) {
int answer = 0, s=-30001, e=-30001;
sort(routes.begin(), routes.end());
for (auto& r : routes) {
if (r[0] > e) {// 중복되는 구간을 벗어나면 새로 시작
s = r[0];
e = r[1];
answer++;
} else {
s = max(s, r[0]);
e = min(e, r[1]);
}
}
return answer;
}