코딩문제풀이/프로그래머스

[Python] 단속카메라

코딩하는 포메라니안 2021. 8. 30. 16:31

1. 문제

 

 

 

2. 풀이 방법

방법 1) 시작점을 기준으로 오름차순 정렬

def solution(routes):
    answer = 0
    routes.sort()
    s = -300000
    e = 30000
    for route in routes:
    	#범위에 교집합이 있으면 범위를 교집합으로 설정
        if s <= route[0] <= e or s <= route[1] <= e:
            s = max(s, route[0])
            e = min(e, route[1])
        else: #범위를 벗어나면 그 전 범위에 카메라 설치하고 범위 다시 세팅
            answer += 1
            s = route[0]
            e = route[1]
    #마지막 범위에 카메라 설치 : + 1
    return answer + 1

 

방법 2) 끝 지점을 기준으로 오름차순 정렬, 간결함

def solution(routes):
    answer = 0
    routes.sort(key = lambda x : x[1])
    camera = -30001 #새로 추가한 카메라의 위치
    
    for route in routes:
        if camera < route[0]:
            answer += 1
            camera = route[1]
    return answer

'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글

[Python] 등굣길  (0) 2021.08.31
[Python] N으로 표현  (0) 2021.08.30
[Python] 섬 연결하기  (0) 2021.08.30
[Python] 이중우선순위큐  (0) 2021.08.30
[Python] 디스크 컨트롤  (0) 2021.08.29