[JavaScript][Programmers] 단속 카메라

조준형·2021년 7월 9일
0

Algorithm

목록 보기
21/142
post-thumbnail

🔎 단속 카메라

❓ 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42884

📄 제출 코드

// routes[i][0] 고속도로 진입지점
// routes[i][1] i번쨰 차량이 고속도로에서 나간 지점
// [-20,15]는 첫번째 차량이 -20진입 15에서 나감.
// [-14, 5]는 두번쨰 차량이 -14진입 -5에서 나감.
// [-18, -13]는 두번쨰 차량이 -18진입 -13에서 나감.
// [-5, -3]는 두번쨰 차량이 -5진입 -3에서 나감. 4
function solution(routes) {
    let arr = [];
    let answer = 0;
    routes.forEach((el) => { arr.push(el) });
    arr.sort((a, b) => { return a[1] - b[1] })
    console.log(arr);
    while (arr.length != 0) {
        let pos = arr[0][1];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i][0] <= pos) {
                arr.splice(i,1);
                i--;
            }
        }
        answer++;
    }
    return answer;
}

let routes = [[-20, 15], [-14, -5], [-18, -13], [-5, -3]];
console.log(solution(routes));

처음에 바로 생각난 방법은 시작점만 모은 배열과 종료지점만 모은 배열을 따로 만들어
정렬 후 가장 작은 값과 가장 큰 값을 구해 그만큼 값을 0으로 채워놓은 객체를 하나만든다.
그래서 routes에 있는 범위만큼 +1씩 하여 값이 최대로 변하는 지점의 개수를 구하여 답을 도출 하려 하였다.

그러나 역시 실패하였고, 다른 방법을 찾다가 시간이 너무 오래걸려(약2시간) 다른 사람의 코드를 참고하였다.

방법은 이러하다.
가장 먼저 탈출하는 곳에 카메라를 설치하면, 그 이전에 출발하는 차들은 무조건 그 지점에서 카메라를 만나니까 배열에서 빼낸다. 그렇게 다 빼면 카메라(answer)를 +1한다.
배열이 다 비워지게되면 카메라 수가 출력된다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글