Skip to content

Commit e8a1c55

Browse files
committed
[level 3] Title: 단속카메라, Time: 8.89 ms, Memory: 60.7 MB -BaekjoonHub
1 parent 6fc2840 commit e8a1c55

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# [level 3] 단속카메라 - 42884
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42884)
4+
5+
### 성능 요약
6+
7+
메모리: 60.7 MB, 시간: 8.89 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 탐욕법(Greedy)
12+
13+
### 채점결과
14+
15+
정확성: 50.0<br/>효율성: 50.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 02월 05일 17:27:56
20+
21+
### 문제 설명
22+
23+
<p>고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.</p>
24+
25+
<p>고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.</p>
26+
27+
<p><strong>제한사항</strong></p>
28+
29+
<ul>
30+
<li>차량의 대수는 1대 이상 10,000대 이하입니다.</li>
31+
<li>routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.</li>
32+
<li>차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다.</li>
33+
<li>차량의 진입 지점, 진출 지점은 -30,000 이상 30,000 이하입니다.</li>
34+
</ul>
35+
36+
<p><strong>입출력 예</strong></p>
37+
<table class="table">
38+
<thead><tr>
39+
<th>routes</th>
40+
<th>return</th>
41+
</tr>
42+
</thead>
43+
<tbody><tr>
44+
<td>[[-20,-15], [-14,-5], [-18,-13], [-5,-3]]</td>
45+
<td>2</td>
46+
</tr>
47+
</tbody>
48+
</table>
49+
<p><strong>입출력 예 설명</strong></p>
50+
51+
<p>-5 지점에 카메라를 설치하면 두 번째, 네 번째 차량이 카메라를 만납니다.</p>
52+
53+
<p>-15 지점에 카메라를 설치하면 첫 번째, 세 번째 차량이 카메라를 만납니다.</p>
54+
55+
56+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
5+
public int solution(int[][] routes) {
6+
int answer = 0;
7+
int jump, r, l, nr, nl;
8+
9+
Arrays.sort(routes, (o1, o2) -> {
10+
return o2[1] - o1[1];
11+
});
12+
13+
// for(int now = 0; now < routes.length; now++) System.out.println(Arrays.toString(routes[now]));
14+
15+
16+
for(int now = 0; now < routes.length; now++) {
17+
18+
jump = 0;
19+
l = routes[now][0];
20+
r = routes[now][1];
21+
// System.out.println(now + "번 " + l + " " + r);
22+
for(int next = now + 1; next < routes.length; next++){
23+
24+
nl = routes[next][0];
25+
nr = routes[next][1];
26+
27+
if(l <= nl && nr <= r){
28+
l = nl;
29+
r = nr;
30+
jump++;
31+
32+
} else if(l <= nr){
33+
r = nr;
34+
jump++;
35+
36+
} else break;
37+
}
38+
// System.out.println(" " + l + " " + r);
39+
40+
now += jump;
41+
answer++;
42+
}
43+
44+
return answer;
45+
}
46+
}

0 commit comments

Comments
 (0)