📹[プログラマ]管制カメラ



問題の説明
高速道路を走るすべての車両が高速道路を使用していると同時に、管制カメラを一度に見られるようにカメラを設置したいと思っています.
高速道路を走行する車両の経路をパラメータとして指定すると、すべての車両が一度に取り締まりカメラに遭遇したときに少なくとも何台のカメラを取り付ける必要があるかを返す解関数が完了する.
せいげんじょうけん
  • 車両の数は1台以上10000台以下である.
  • 路線は車両の移動路線[i][0]、路線[i][1]はi次車両が高速道路に進入する場所を含み、路線[i][1]はi次車両が高速道路を離れる場所を含む.
  • 車両の進入点にカメラが取り付けられていても、カメラに遭遇したものとみなされる.
  • 車両の進入点は、−30000以上30000以下である.
  • I/O例
    routesreturn[[-20,-15], [-14,-5], [-18,-13], [-5,-3]]2
    I/O例説明
    -5時にカメラを設置すると、2台目、4台目の車がカメラに遭遇します.
    -15時にカメラを設置すると、1台目と3台目の車がカメラに遭遇します.

    プールの開始

    function solution(routes) {
        routes.sort((a,b) => a[0] - b[0])
        // 처음 차를 검사해야함
        let setCamera = 1
        let prevOut = routes[0][1]
        for(let i = 1 ; i < routes.length ; i ++) {
            const [carIn,carOut] = routes[i]
            // 겹치지 못한 경우 나가는 시점을 현재 시점으로 변경하고 카메라를 1대 추가 설치한다
            if(prevOut < carIn) {
                setCamera++
                prevOut = carOut
            } 
            
            // 겹친 경우 이전 차량보다 현재 차량이 먼저 나간다면 다음 카메라 설치를 위해 현재 차량의 나가는 시점으로 시점을 변경
            if(prevOut > carOut) {
                prevOut = carOut
            }
        }
        return setCamera
    }