-
https://school.programmers.co.kr/learn/courses/30/lessons/42884
아이디어
prefix sum이 아닐까하는 생각으로 많이 고민을 했었는데 방법을 찾는 문제였습니다.
나가는 지점 순으로 정렬을 한 후 cameraPoint를 최소값인 -30000보다 아래로 잡고 설치된 지점보다 앞쪽에 위치한 진입점를 만날경우 해당 routes의 나가는 지점으로 변경 후 카메라의 개수를 늘려주는 조건으로 정렬된 routes를 순회하면 됩니다. 코드가 단순할수록 아이디어를 많이 필요로 하게되는 것이 느껴집니다.
#include <string> #include <vector> #include <algorithm> using namespace std; int solution(vector<vector<int>> routes) { int answer = 0; int cameraPoint = -30001; sort(routes.begin(), routes.end(), [](vector<int> a, vector<int> b)->bool { return a[1] < b[1]; }); for (auto &iter : routes) { if (cameraPoint < iter[0]) { answer++; cameraPoint = iter[1]; } } return answer; }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Programers 귤 고르기 / C++ (1) 2022.12.03 Programers 야근지수 / C++ (0) 2022.12.03 Programers 같은 숫자는 싫어 (0) 2022.09.11 Programers 이진 변환 반복하기 (0) 2022.09.11 2022 카카오 여름인턴쉽 코딩테스트 4번 등산코스 정하기 (0) 2022.09.06 댓글