[프로그래머스] 단속카메라 (C++)

공부 스파이럴·2024년 5월 17일
0

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12938

유사한 문제

https://school.programmers.co.kr/learn/courses/30/lessons/181188

아이디어1

진입점이 작은 순서대로 정렬

진입점과 진출점을 비교하며 카운트

  • 진출점을 e라고 하자
  • routes를 돌면서 원소 r에 대해 r[0]과 e를 비교해서 r[0]이 크다면 둘의 공통 지점이 없기 때문에 카운트 + 1
    • e를 r[1]로 교체
  • 아니라면 e는 e와 r[1] 중 작은 값으로 교체
#include <string>
#include <vector>
#include <algorithm>

#include <iostream>

using namespace std;

int solution(vector<vector<int>> routes) {
    int answer = 1;
    
    sort(routes.begin(), routes.end());
    
    int e = routes.front()[1];
    
    for (auto r : routes)
    {
        if (r[0] > e)
        {
            answer++;
            e = r[1];
        }
        else
        {
            e = min(e, r[1]);
        }
    }
    
    return answer;
}

0개의 댓글