새벽코딩

[프로그래머스] 단속카메라 (level3, jAVA) 본문

알고리즘

[프로그래머스] 단속카메라 (level3, jAVA)

J 코딩 2025. 2. 27. 17:44
반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


※ 문제 설명

고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.

고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.

제한사항

  • 차량의 대수는 1대 이상 10,000대 이하입니다.
  • routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.
  • 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다.
  • 차량의 진입 지점, 진출 지점은 -30,000 이상 30,000 이하입니다.

※ JAVA 코드

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public int solution(int[][] routes) {
        int value = 0;
        int answer = 0;
        Arrays.sort(routes, Comparator.comparingInt(r -> r[1]));
        value = routes[0][1]; // 초기 카메라 라인
        answer = 1;
        for(int i = 1; i < routes.length; i++) {
            if(routes[i][0] <= value) continue;
            else {
                value = routes[i][1]; // 카메라 라인 수정
                answer++;
            }
        }
        return answer;
    }
}

※ 문제설명

이 문제는 여러 차량진입 route를 정렬하는 것에서 부터 시작이다. 차량의 진입 위치는 겹쳐도 카메라 라인 설정에 문제가 없지만 차량의 진출지점보다 작거나 같은 범위에 카메라가 위치해야 있어야한다. 따라서 차량 진출지점 순서대로 정렬해야한다.

두번째로 가장 앞에 진출한 차량의 진출위치를 미리 기록해두고 해당 위치에 카메라를 세운다. 그 이후에 진출하는 차량들중 해당 카메라 위치보다 앞쪽에 진입한 차량은 해당 카메라에 걸리기떄문에 신경쓰지 않아도 되어 continue한다.

위의 과정을 반복하여 끝까지 탐색하면 전체 카메라 개수를 구할 수 있다.

 

감사합니다.

반응형
Comments