728x90
반응형
1. 문제 설명
고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.
고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요.
2. 제한사항
- 차량의 대수는 1대 이상 10,000대 이하입니다.
- routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.
- 차량의 진입/진출 지점에 카메라가 설치되어 있어도 카메라를 만난것으로 간주합니다.
- 차량의 진입 지점, 진출 지점은 -30,000 이상 30,000 이하입니다.
3. 입출력 예시
routes | return |
[[-20,-15], [-14,-5], [-18,-13], [-5,-3]] | 2 |
입출력 예 설명
-5 지점에 카메라를 설치하면 두 번째, 네 번째 차량이 카메라를 만납니다.
-15 지점에 카메라를 설치하면 첫 번째, 세 번째 차량이 카메라를 만납니다.
4. 문제풀이
def solution(routes):
answer = 0
routes.sort(key=lambda x:x[1]) # 진출 시점을 기준으로 오름차순 정렬을 한다.
# 진입 시점을 기준으로 cam을 움직이게 되기 때문에 진출 시점을 기준으로 오름차순 한다.
# i번째 진출 시점과 i+1번째 진입 시점의 순서를 비교하게 된다.
cam = routes[0][0]-1 # 제일 앞에 있는 차량 진입시점 바로 앞에서 시작
# 진입시점과 같게 시작하면 i번째 진출과 i+1번째 진입 시점 같은 경우 체크 못하게 된다.
for i in routes: # i번째 차량에서
if cam<i[0]: # cam위치가 진입시점보다 앞이면
answer+=1 # cam을 옮겨올꺼니깐 체크
cam=i[1] # cam을 진출 시점으로 옮긴다.
# cam위치가 진입시점보다 뒤면 체크하지 않는다.
# 왜냐면 원래 있던 cam으로 체크가 되기 때문이다.
return answer
5. 회고
코드는 간단했지만 생각을 저렇게 연결하기가 쉽지 않았다. 그리디 문제가 대부분 코드는 간단한 것 같지만 구현으로 옮기는데 좀 오래걸린다. 생각의 유연함을 조금 더 가져야 쉽게 풀 수 있을 거 같다..
728x90
반응형
'DS | Data Science > Alogithm & Coding Test - Python' 카테고리의 다른 글
[프로그래머스] 고득점 Kit - 그래프 : 가장 먼 노드(파이썬) (0) | 2022.10.23 |
---|---|
[프로그래머스] 고득점 Kit - 완전탐색 : 모음사전(파이썬) (0) | 2022.10.12 |
[프로그래머스] 고득점 Kit - 정렬 : H-Index(파이썬) (0) | 2022.10.09 |
[프로그래머스] 고득점 Kit - 스택/큐 : 올바른 괄호(파이썬) (0) | 2022.10.04 |
[프로그래머스] 고득점 Kit - 힙 : 디스크 컨트롤러(파이썬) (0) | 2022.10.01 |