320x100
문제 : https://programmers.co.kr/learn/courses/30/lessons/42884
그리디로 풀었다.
먼저 루트들을 시작위치를 기준으로 오름차순정렬한다.
변수를 만들어서 커버가능한 시작위치 종료위치(let, cover)를 저장한다.
루트들을 처음부터 탐색하면서 탐색 중인 루트(let, route)가 이전 가능한 카메라 위치로 커버가능한지 체크한다.
만약 route.시작위치 > cover.종료위치 이거나 route.종료위치 < cover.시작위치 라면 범위가 커버가 불가능하므로 카메라를 한 대 더 설치해야한다. 카메라 대수를 한 대 증가시키고 cover 변수를 현재 route 범위로 갱신한다.
이전 카메라로 커버가 가능하다면 현재 route 범위와 cover 범위의 교집합으로 cover 변수를 갱신해야 한다.
따라서 큰 값(cover.시작위치, route.시작위치), 작은 값(cover.종료위치, route.종료위치)로 cover 변수를 갱신한다.
시간복잡도는 정렬하는데 드는 시간인 O(NlogN). N = |routes|.
320x100
'알고리즘 문제 > Programmerse' 카테고리의 다른 글
[programmers][2021카카오인턴십] 거리두기 확인하기 (0) | 2021.07.30 |
---|---|
[Programmers] 하노이의 탑 (0) | 2021.07.06 |
[Programmers] 섬 연결하기 (0) | 2021.06.14 |
[Programmers][2020 카카오 인턴십] 보석 쇼핑 (0) | 2021.06.13 |
[Programmers] 디스크 컨트롤러 (0) | 2021.06.11 |
댓글