[알고리즘] 탐욕법(Greedy) 프로그래머스 3단계 - 단속카메라
def solution(routes):
answer = 0
status = [0] * len(routes)
routes.sort(key=lambda x:x[1])
for i in range(len(routes)):
if status[i] != 0:
continue
for j in range(i, len(routes)):
if routes[i][1] >= routes[j][0]:
status[j] = 1
answer += 1
return answer
풀이과정
1. routes
의 길이 만큼 상태를 저장하는 배열 status
를 만든다.
- 원소 값이 1이면 단속 카메라를 만난 것이고 0이면 아직 만나지 않은 것이다.
- 끝나는 기점을 기준으로
routes
를 정렬한다.
2. routes
배열을 for문을 돌리면서 i번째 인덱스를 검사한다.
status
의 i번째 인덱스가 1이면, 이미 단속 카메라를 만난 것이다.- 아직 만나지 않았을 때,
routes[i][1] >= routes[j][0]
이면 겹치는 지점이 생긴 것으로 status 원소 값을 1로 바꿔준다. - 단속 카메라를 만났기에
answer
값을 1 올려준다.
ex) [-20, 15], [-18, -13]은 15 > -18
이기에 겹치는 부분이 생기고 단속 카메라를 1대 설치해주면 된다.
Author And Source
이 문제에 관하여([알고리즘] 탐욕법(Greedy) 프로그래머스 3단계 - 단속카메라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minidoo/알고리즘-탐욕법Greedy-프로그래머스-3단계-단속카메라저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)