본문 바로가기

Programmers/Level3

단속카메라

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
class Solution {
    public int solution(int[][] routes) {
        int answer = 0;
        boolean[] checked = new boolean[routes.length];
        
        // 끝나는 지점이 빠른 순으로 정렬
        Arrays.sort(routes, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1- o2[1];
            }
        });
 
        for (int i = 0; i < routes.length; i++) {
            if (checked[i])
                continue;
            int pos = routes[i][1];
            checked[i] = true;
            answer++;
            for (int j = i + 1; j < routes.length; j++) {
                // 시작지점이 pos 이전인지 확인
                if (pos >= routes[j][0])
                    checked[j] = true;
            }
        }
        return answer;
    }
}
cs

끝나는 지점이 빠른 순으로 정렬 후, 해당 지점과 겹치는 부분을 검사하였다.

끝나는 지점 순으로 정렬했기 때문에 해당 지점이 시작지점에 포함되는지만 검사하면 된다.

끝나는 지점을 사용한 횟수를 카운트하면 정답이 된다.

'Programmers > Level3' 카테고리의 다른 글

징검다리 건너기  (0) 2021.08.26
N으로 표현  (0) 2021.08.25
등굣길  (0) 2021.08.24
하노이의 탑  (0) 2021.08.18
[카카오 인턴] 보석 쇼핑  (0) 2021.08.17