탐욕법을 풀다가 만난 흥미로운 문제다. 다양한 해결 방법이 있었는데, 효율이 가장 좋게 나오는 방식을 찾다가 흥미로워서 포스팅하려고 한다.
처음엔 정확히 어느 지점에 단속 카메라를 배치하려고 시도했다. 정확히 어느 지점에 두려고 하니 범위로 지정될 수 밖에 없다는 사실을 깨닫고 멘붕했다.
원리를 이해하면 정확히 배치하지 않더라도 카메라가 몇 개가 필요한지 계산할 수 있다는 부분이 흥미로웠다.
https://programmers.co.kr/learn/courses/30/lessons/42884
function solution(routes) {
routes.sort((a, b) => a[0] - b[0]);
let result = 1;
let latestEnd = routes[0][1];
for (let i = 1; i < routes.length; i++) {
let [start, end] = routes[i];
if (latestEnd < start) {
result++;
latestEnd = end;
}
if (end < latestEnd) {
latestEnd = end;
}
}
return result;
}