학습 키워드 : 정렬, 그리디
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42884
고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
def solution(routes:list):
ans=0
routes.sort(key=lambda x:x[1])
camera=-30001
for route in routes:
st,ed=route
if camera<st:
ans+=1
camera=ed
return ans
def solution(routes:list):
ans=1
routes.sort()
camera=routes[0][1]
for i in range(1,len(routes)):
st,ed=routes[i]
if st>camera:
ans+=1
camera=ed
else:
camera=min(camera,ed)
return ans
이 문제는 진출 시점을 기준으로 정렬하는 방법과 진입 시점을 기준으로 정렬하는 방법 두 가지 모두 문제가 풀린다.
정렬의 아이디어가 중요했던 문제 풀면서 진입 시점을 기준으로 정렬할지 진출 시점으로 정렬할지 고민했지만 조건을 고려해보면 두 개 다 풀리더라