문제링크
programmers.co.kr/learn/courses/30/lessons/42884
문제난이도
Level3
문제설명
1. 차량의 고속도로 집입 시점을 기준으로 오름차순 정렬
2. 차량의 이동안에 단속카메라가 있으면 해당 자동차 위치로 단속카메라 필요 범위 수정
소스코드
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> routes) {
int answer = 0;
vector<pair<int, int>> vc;
sort(routes.begin(), routes.end()); //차량 시작위치를 기준으로 오름차순 정렬
vc.push_back(make_pair(routes[0][0], routes[0][1])); //처음 차량의 단속위치
for (int i = 1; i < routes.size(); i++) {
int a = routes[i][0];
int b = routes[i][1];
bool flag = false;
for (int j = 0; j < vc.size(); j++) {
flag = false;
//차량 시적이 단속카메라 범위 안에 있는 경우
if (vc[j].first <= a && a <= vc[j].second) {
vc[j].first = a;
flag = true;
}
//차량 마지막 위치가 단속카메라 범위 아에 있ㄴ.ㄴ 경우
if (vc[j].first <= b && b <= vc[j].second) {
vc[j].second = b;
flag = true;
}
if (flag) {
break;
}
}
if (!flag) { //단속카메라 범위 안에 차량이 한번도 안나온 이유
vc.push_back(make_pair(a, b));
}
}
answer = vc.size();
return answer;
}
int main() {
ios::sync_with_stdio;
cin.tie(nullptr);
//{ {-20, 15}, {-14, -5}, {-18, -13}, {-5, -3} } // 2
//{{-2, -1}, {1, 2}, {-3, 0}} // 2
//{{0, 1}, {0, 1}, {1, 2}} // 1
//{{0, 0}}} // 1
//{{0, 1}, {2, 3}, {4, 5}, {6, 7}} // 4
//{{-20, -15}, {-14, -5}, {-18, -13}, {-5, -3}} //2
//{{-20, 15}, {-14, -5}, {-18, -13}, {-5, -3}} //2
//{{-20, 15}, {-20, -15}, {-14, -5}, {-18, -13}, {-5, -3}} //2
vector<vector<int>> routes = { {-20, 15}, {-14, -5}, {-18, -13}, {-5, -3} };
int answer = solution(routes);
cout << answer << '\n';
return 0;
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
[백준 9935]문자열 폭발 (0) | 2020.11.13 |
---|---|
[백준 1647]도시 분할 계획 (0) | 2020.11.08 |
[프로그래머스 42861]섬 연결하기 (0) | 2020.11.05 |
[프로그래머스 42885]구명보트 (0) | 2020.11.04 |
[프로그래머스 42627]디스크 컨트롤러 (0) | 2020.11.02 |