문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- routes에 대한 정렬을 진입,진출 중 어떤 것으로 할 지 선택해야함
- 진출로 잡아야 해당 차량이 이동하는 구간에서의 카메라 위치를 잡을 수 있음.
- 현재 차량의 진입 시점이 카메라보다 크다면 그 카메라는 지금의 차량을 잡을 수 없으므로 카메라를 하나 더 추가해야함
- 그 카메라의 위치는 현재 차량의 진입,진출을 모두 커버 가능해지므로 최대 범위인 진출로 일단 잡아둠.
- 3,4번 논리를 반복하면서 camera 수와 위치를 수정해주면 해결 되는 문제.
소스 코드
def solution(routes):
n = len(routes) #자동차 갯수
answer = 1
routes.sort(key=lambda x:x[1]) #진출 시점 기준으로 정렬
camera = routes[0][1] #카메라 초기 값은 맨 첫 차량의 진출 시점
for i in range(1,n):
s,e = routes[i]
if camera<s:
camera=e
answer+=1
else:
continue
return answer
print(solution([[-20,-15], [-14,-5], [-18,-13], [-5,-3]]))
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[연습 문제] 숫자 게임 (0) | 2023.04.05 |
---|---|
[우선순위 큐] 야근 지수 *** (0) | 2023.04.03 |
[동적 계획법] 등굣길 (0) | 2023.03.31 |
[DFS/BFS] 단어 변환 (0) | 2023.03.30 |
[DFS/BFS] 네트워크 (0) | 2023.03.30 |