문제 설명
고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
제한사항
차량의 대수는 1대 이상 10,000대 이하입니다.
routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.
차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다.
차량의 진입 지점, 진출 지점은 -30,000 이상 30,000 이하입니다.
입출력 예
routes return
[[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2
입출력 예 설명
-5 지점에 카메라를 설치하면 두 번째, 네 번째 차량이 카메라를 만납니다.
-15 지점에 카메라를 설치하면 첫 번째, 세 번째 차량이 카메라를 만납니다.
import java.util.*;
class Solution {
public int solution(int[][] routes) {
Arrays.sort(routes, (a, b) -> Integer.compare(a[1], b[1]));
int count = 0;
int lastCamera = Integer.MIN_VALUE; //int의 최소값
System.out.println(lastCamera);
for (int[] route : routes) {
if (lastCamera < route[0]) {
count++;
lastCamera = route[1];
}
}
//for (int[] route : routes) {
//System.out.println(Arrays.toString(route));
//}
return count;
}
}
Arrays.sort(routes, (a, b) -> Integer.compare(a[1], b[1]));
람다식 구조
(a, b) -> Integer.compare(a[1], b[1])는 Comparator를 간단하게 작성한 람다식
- a와 b :
- a와 b는 routes 배열의 두 요소를 나타냅니다.
- 즉, a와 b는 2차원 배열의 한 행(1차원 배열)입니다. 예: a = {-20, -15}, b = {-14, -5}
- a[1]와 b[1] :
- a[1]은 배열 a의 두 번째 요소(진출 지점), b[1]은 배열 b의 두 번째 요소(진출 지점)를 나타냄
- Integer.compare(a[1], b[1]) :
- 두 숫자를 비교하여, 결과를 반환
- a[1] < b[1]이면 음수 반환 → a가 b보다 앞에 위치.
- a[1] == b[1]이면 0 반환 → a와 b의 순서를 유지.
- a[1] > b[1]이면 양수 반환 → a가 b보다 뒤에 위치.
- 람다식 전체 :
- (a, b) -> Integer.compare(a[1], b[1])는 정렬 기준을 지정하는 Comparator 역할을 합니다.
- 이 경우, 2차원 배열의 두 번째 요소(a[1], b[1])를 기준으로 오름차순 정렬합니다.
Integer.MIN_VALUE
Integer.MIN_VALUE는 자바에서 사용할 수 있는 정수형(int)의 최소값을 나타내는 상수입니다.
java.lang.Integer 클래스에서 제공하며, -2,147,483,648이라는 값을 가지고 있습니다.
'Coding > Coding Test Bookmark' 카테고리의 다른 글
[Coding Test Bookmark] 요격 시스템(Java, "단속카메라"와 비슷) (0) | 2025.01.24 |
---|---|
[Coding Test Bookmark] 크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴십) (0) | 2025.01.23 |
[Coding Test]완주하지 못한 선수(java,프로그래머스) (0) | 2025.01.09 |
[Coding Test Bookmark]디스크 스케줄링(java, 프로그래머스) (0) | 2024.09.21 |
[Coding Test Bookmark]카펫(java,프로그래머스) (0) | 2024.09.11 |