JAVA/Coding Test Study
[Lv.3] 프로그래머스 - 단속카메라 : Java
♡˖GYURI˖♡
2024. 4. 15. 19:56
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이해하기
{{-20, -15}, {-14, -5}, {-18, -13}, {-5, -3}} 을 진출 지점을 기준으로 정렬한다.
첫번째 줄의 진출 지점에 일단 카메라를 설치한다.
-15 지점에 카메라를 설치하면 두번째 줄까지 커버 가능하기에 두번째 줄에는 카메라를 설치할 필요가 없다.
세번째 줄은 커버되지 않으므로 진출 지점에 카메라를 설치한다.
-5 지점에 카메라를 설치하면 네번째 줄까지 커버 가능하기에 네번째 줄에는 카메라를 설치할 필요가 없으니 총 2대만 설치하면 된다.
문제풀이
import java.util.*;
class Solution {
public int solution(int[][] routes) {
int answer = 0;
int cam = Integer.MIN_VALUE;
Arrays.sort(routes, (o1, o2) -> o1[1] - o2[1]);
for (int[] route : routes) {
if (cam < route[0]) {
cam = route[1];
answer++;
}
}
return answer;
}
}
if (cam < route[0]) {
cam = route[1];
answer++;
}
이 부분은 캠이 마지막으로 설치된 지점과 이번 줄의 진입 지점을 비교하는 것이다.
예를 들어 마지막으로 캠이 설치된 지점이 -15이고, 이번에 살펴야 할 줄이 {-14, -5}라면 진입 지점보다 캠이 왼쪽에 있으니 직전에 설치된 캠으로는 해당 줄을 커버할 수 없다.
그렇기에 cam을 해당 줄의 진출 지점에 설치하고 (cam = route[1]) 카메라 개수를 하나 늘려주는 것이다.