Algorithm/Programmers
42884. 단속 카메라
사랑우주인
2025. 4. 4. 00:21
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42884?language=java
제한 사항

풀이
import java.util.*;
class Solution {
public int solution(int[][] routes) {
int answer = 0;
Arrays.sort(routes,
(r1, r2) -> r1[1] - r2[1]);
int camara = -30001;
for(int i = 0 ; i < routes.length; i++) {
if(camara < routes[i][0]) {
camara = routes[i][1];
answer++;
}
}
return answer;
}
}
회고
막상 구현은 간단한데 아이디어가 쉽게 떠오르지 않은 문제였다. 존재하지 않는 위치에 임의로 카메라를 두고(-30001) 풀면 생각에 도움이 된다. 제한 사항을 잘 읽어야 겠다는 생각을 했다. 괜히 진출 지점을 -30,000~30,000을 두는게 아닌 것 같다.
우선, 진출 지점을 기준으로 오름차순 정렬을 수행한다. 그리고 카메라 위치 기준 각 루트의 진입 지점이 카메라 위치보다 앞에 있으면, 진입과 진출 사이에 카메라에 걸릴 것이다. 반대로 카메라 위치보다 뒤에 있으면, 카메라에 걸리지 않으므로 새 카메라를 설치해야한다.
새 카메라 위치를 어디에 두느냐가 관건이었다. 새 카메라 위치는 루트의 진출 지점에 둬야 최소한 진입 지점에서 진출 지점 사이에 진입하는 새 루트가 카메라에 걸릴 것이다.