https://school.programmers.co.kr/learn/courses/30/lessons/42884
문제
- 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
- 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때,
- 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
제한사항
- 차량의 대수는 1대 이상 10,000대 이하입니다.
- routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.
- 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다.
- 차량의 진입 지점, 진출 지점은 -30,000 이상 30,000 이하입니다.
입출력 예제
설계과정
1. routes 배열을 오름차순으로 정렬한다.
2. 현재 카메라가 다음 구간의 시작점보다 적으면 새 카메라를 다음 구간의 종료 지점에 설치한다.
3. 결과를 출력한다.
아래 블로그 글을 참조했다.
풀이과정
1. 입력받은 routes[ ][ ] 배열을 오름차순으로 정렬한다.
- 정렬은 기본적으로 Arrays.sort(); 를 사용한다. 다만 이번 문제에서는 N차원 배열을 정렬하기에 그에 맞게 사용한다.
- Arrays.sort()에 대한 자세한 내용은 아래를 참조한다.
https://bangu4.tistory.com/287
2. 카메라의 위치를 저장할 변수 cam을 선언하고 최소값으로 초기화한다.
3. 현재 카메라가 다음 구간의 시작점보다 적으면 새 카메라를 다음 구간의 종료 지점에 설치한다.
- 다음 구간 사이에 빈 구간이 있다는 의미이다.
- 종료 지점은 반드시 한 번은 지나가야하기에 종료 지점에 설치한다.
4. 결과를 출력한다.
답안소스
- 프로그래머스
import java.util.*;
class Solution {
public int solution(int[][] routes) {
int answer = 0;
Arrays.sort(routes, new Comparator<int[]>() {
@Override
public int compare(int[] route1, int[] route2) {
return route1[1] - route2[1];
}
});
int cam = Integer.MIN_VALUE;
for(int[] route : routes) {
if(cam < route[0]) {
cam = route[1];
answer++;
}
}
return answer;
}
}
- 이클립스
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[][] routes = new int[][] {{-20,-15}, {-14,-5}, {-18,-13}, {-5,-3}};
int answer = 0;
Arrays.sort(routes, new Comparator<int[]>() {
@Override
public int compare(int[] route1, int[] route2) {
return route1[1] - route2[1];
}
});
int cam = Integer.MIN_VALUE;
for(int[] route : routes) {
if(cam < route[0]) {
cam = route[1];
answer++;
}
}
System.out.println(answer);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]Lv.1 짝수와 홀수 (0) | 2023.04.10 |
---|---|
[프로그래머스]Lv.3 숫자 게임 (0) | 2023.04.08 |
[프로그래머스]Lv.3 등굣길 (0) | 2023.04.06 |
[프로그래머스]Lv.3 이중우선순위큐 (0) | 2023.04.05 |
[프로그래머스]Lv.3 단어 변환 (0) | 2023.04.05 |