[프로그래머스] 단속카메라

adultlee·2023년 6월 7일
0

문제 링크

프로그래머스 문제

풀이

현재 시점에서 가장 최적의 경우를 계산해야하느 문제이다.
해당 문제는 현 시점에서 3가지 경우가 존재한다.
1. 현재 카메라 위치가 curIn과 curOut 사이에 있는경우 -> 이때는 변경이 없다.
2. curOut이 현재 cameraPosition보다 안쪽인경우 -> 이때는 cameraPostion을 안쪽으로 이동시킨다.
3. 완전 새로운 구간이 시작되어 겹치지 않는 경우 -> cameraPostion을 새로운 curOut으로 변경

코드

function solution(routes) {
    var answer = 1;
    // 진입시점을 기준으로 정렬합니다. 
    routes.sort((a,b) => a[0] - b[0])
    
    let cameraPostion = routes[0][1]; // 첫번재 카메라 위치는 첫 구간의 마지막 위치입니다.
    
    for(let i=1; i< routes.length; i++){
        const [curIn, curOut] = routes[i];
        
        // 현재 카메라 위치가 curIn과 curOut 사이에 있는경우 -> 이때는 변경이 없다.
        
        // curOut이 현재 cameraPosition보다 안쪽인경우 -> 이때는 cameraPostion을 안쪽으로 이동시킨다.
        if( curOut <= cameraPostion){
            cameraPostion = curOut
            continue;
        }
        
        // 완전 새로운 구간이 시작되어 겹치지 않는 경우 -> cameraPostion을 새로운 curOut으로 변경
        if(cameraPostion < curIn) {// 이때, 같은 경우는 안된다. 
            cameraPostion = curOut;
            answer++;
            continue;
        }
        
        
    }
    return answer;
}

0개의 댓글