출처: 프로그래머스 코딩테스트 단속카메라 (Greedy) 6번째 문제
(https://programmers.co.kr/learn/courses/30/lessons/42884)
고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
function solution(routes) {
let installCnt = 0
const checked = new Array(routes.length).fill(false)
routes.sort((a, b) => a[1] - b[1])
for (let i = 0; i < routes.length; i++) {
if (checked[i]) continue
checked[i] = true
unifyDuplicatedRoutes(routes, i, checked)
installCnt++
}
return installCnt
}
function unifyDuplicatedRoutes(routes, i, checked) {
const endPoint = routes[i][1]
for (let j = i + 1; j < routes.length; j++) {
const startPoint = routes[j][0]
if (checked[j]) continue
if (startPoint > endPoint) break
checked[j] = true
}
}
그리디 마지막 문제여서 엄청 어려운 문제일 줄 알았느데 생각보다 간단하게 풀려서 스무스하게 넘어갔던 문제였다.