Game Develop

[Algorithm] Programmers :: 단속카메라 본문

Algorithm/Programmers

[Algorithm] Programmers :: 단속카메라

MaxLevel 2022. 5. 28. 10:42

https://programmers.co.kr/learn/courses/30/lessons/42884?language=cpp 

 

코딩테스트 연습 - 단속카메라

[[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool cmp(const vector<int>& temp1, const vector<int>& temp2)
{
    return temp1[0< temp2[0];
}
 
int solution(vector<vector<int>> routes) {
    int answer = 0;
    sort(routes.begin(), routes.end(), cmp);
 
    // 출발지점이 그 전의 카메라설치위치보다 뒤면 설치안해도됨.
    int lastCamera = -99999;
    vector<int> cameras;
    for (int i = 0; i < routes.size(); i++)
    {
        if (routes[i][0> lastCamera)
        {
            lastCamera = routes[i][1];
            answer++;
        }
    }
    
    return answer;
}
cs

이 문제의 풀이법같은 경우는 차량의 진출지점을 기준으로 오름차순정렬을 한 다음 푸는게 관건이다.

많이 어려운 문제는 아니라서, 정렬을 했다는 가정하에 노트에다가 계층구조로 선을 각각 그어보면은 바로 알아챌 수 있다.

각각의 원소를 검사할 때, 진입지점이 마지막에 설치했던 카메라위치보다 뒤면(값이 더 높으면) 해당원소의 진출지점에 카메라를 설치한다(answer++).

마지막카메라의 위치가 현재원소의 진입지점보다 뒤에있을 경우, 어차피 그 카메라에 찍히기때문에 새로 설치할필요가없다. 이렇게 반복하면 답이 구해진다.