본문 바로가기

프로그래머스(Java)/Level 3

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

728x90

코드 힌트:

  1. 카메라 설치 기준:
    • 차량이 고속도로를 나가는 시점에 카메라를 설치하는 것이 가장 효율적입니다.
    • 카메라를 설치한 이후에도 다른 차량이 해당 카메라에 걸리는지 확인합니다.
    • 차량의 경로가 카메라의 범위를 벗어나는 경우 새로운 카메라를 설치합니다.
  2. 정렬:
    • 차량이 고속도로에서 나가는 시점에 맞춰 오름차순으로 정렬합니다.
    • 정렬된 상태에서 경로를 순차적으로 확인해 카메라 설치 여부를 결정합니다.
  3. 로직 흐름:
    • 차량이 나가는 시점을 기준으로 정렬한 후, 가장 먼저 나가는 차량에 카메라를 설치합니다.
    • 그 이후 차량들의 경로가 카메라 범위 안에 포함되는지 확인한 후, 포함되지 않으면 새로운 카메라를 설치합니다.

 

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int solution(int[][] routes) {
        int result = 0; // 카메라 설치 수
        
        // 차량들이 고속도로에서 나가는 시점을 기준으로 정렬 (오름차순)
        Arrays.sort(routes, (o1, o2) -> {
            return o1[1] - o2[1]; 
        });
        
        result++; // 첫 번째 차량에 대해 카메라를 설치
        int max = routes[0][1]; // 첫 차량이 나가는 시점에 카메라 설치
        
        // 나머지 차량들의 경로를 확인
        for (int[] route : routes) {
            // 현재 카메라로 해당 차량을 감시할 수 없는 경우
            if (max < route[0]) {
                result++; // 새로운 카메라 설치
                max = route[1]; // 새로운 카메라 위치를 현재 차량의 나가는 지점으로 갱신
            }
        }
        
        return result; // 설치한 카메라 수 반환
    }
}
728x90