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 |