Closed yeahdy closed 4 days ago
O(N)
으로 풀이=
이 포함 됨=> 완전탐색은 6억이므로 불가 => O(NlogN) or O(N)으로 생각해보기
last
: 단속카메라 설치 기준점요격 시스템과 같은 문제이고, 한 차량의 진입점과 단속카메라 설치지점이 일치해도 가능하다는 점만 다른 것 같습니다
그리디
한 방식으로 카메라를 설치하려면 마지막 좌표에 카메라를 설치하는 것이 효율적차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주
이므로 등호는 필요 없음1 <= 차량의 개수(n) <= 10,000
-30,000 <= 차량의 진입, 진출 지점 <= 30,000
60,000log60,000
까지 가능Integer.MAX_VALUE
로 선언N<=10,000, |진입, 진출 지점| <=30,000
그리디
최선의 선택
: 진출 지점에 설치!정렬
Arrays.sort(routes, (a,b) -> Integer.compare(a[1], b[1])); // 나간 지점 기준 정렬
진출 지점에 카메라 설치
// 단속카메라 탐색
int cnt = 0; // 카메라 개수
int endCamera= Integer.MIN_VALUE; // 처음엔 카메라 설치X
for(int i=0; i<routes.length; i++){
int s = routes[i][0]; // 진입 지점
int e = routes[i][1]; // 진출 지점(나감)
if(endCamera<s){ // 설치되지 않은 지점
cnt++; // 카메라 설치
endCamera = e; // 나가는 지점에 카메라 설치!
}
}
O(NlogN)
출발점 기준으로 오름차순 정렬
후 진출 지점
부터 단속카메라 시작for(int i=1; i<routes.length; i++){
if(current < routes[i][0]){
answer++;
current = routes[i][1];
}else{ //current >= routes[i][0]
current = Math.min(current, routes[i][1]);
}
}