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

첫번째 풀이
// 한번은 만나게 최소 몆대 설치해야함?
function solution(routes) {
// 빨리 나간 순으로 정렬
routes.sort((a, b) => a[1] - b[1]);
const camera = [routes[0][1]]; // 첫번째 카메라
for (let i = 1; i < routes.length; i++) {
const [start, end] = routes[i];
// 이전의 카메라를 만난적 없음 카메라 추가
if (!isMet(start, end, camera)) {
camera.push(end);
}
}
return camera.length;
}
function isMet(currStart, currEnd, prevCam) {
for (const time of prevCam) {
if (currStart <= time && time <= currEnd) {
return true;
}
}
return false;
}

두번째 풀이 (그리디)
이전 차가 나간 시각 < 현재 차가 진입한 시각 일 때 카메라를 현재차가 나간시각에 추가한다.

function solution(routes) {
var answer = 0;
let lastCamera = -Infinity;
// 빨리 나가는 순으로 정렬
routes.sort((a, b) => a[1]-b[1]);
for (const [start, end] of routes) {
if (lastCamera < start) {
answer++;
lastCamera = end;
}
}
return answer;
}

'알고리즘' 카테고리의 다른 글
[백준] 괄호 추가하기 3 JS풀이 (0) | 2024.02.26 |
---|---|
[프로그래머스] 가장 긴 팰린드롬 (0) | 2024.02.22 |
[프로그래머스] 택배 배달과 수거하기 (0) | 2024.02.14 |
[2024 카카오] n + 1 카드게임 JS (0) | 2024.02.06 |
[Softeer] 교차로 JS (큐, 구현) (0) | 2024.02.02 |