프로그래머스 / 단속카메라 / python

맹민재·2023년 4월 28일
0

알고리즘

목록 보기
84/134
from collections import deque
def solution(routes):
    answer = 0
    routes.sort(key=lambda x: x[1])
    q = deque()
    
    for route in routes:
        s, e = route[0], route[1]
        if q and q[0] < s:
            answer += 1
            q = deque()
        q.append(e)
    if q:
        answer += 1
    return answer

차량이 고속도로에서 나간 지점을 기준으로 정렬해서 만약 새로 들어온 차가 종료시간보다 크다면 다른 카메라가 필요한 경우이므로 answer + 1 해주고
아니라면 q에 저장하는 방식으로 해결

마지막에 q가 비워져있지 않다면 q에 남아있는 차량들이 하나의 단속 카메라로 감시할 수 있는것을 뜻하므로 + 1 해준다.


다른 분의 코드를 봤는데 더 효율적인 코드가 있어서 복붙...

def solution(routes):
    routes = sorted(routes, key=lambda x: x[1])
    last_camera = -30000

    answer = 0

    for route in routes:
        if last_camera < route[0]:
            answer += 1
            last_camera = route[1]

    return answer

생각해보니 어차피 deque에 저장해 논 종료시점보다 큰 시작 시점이 있을 때 deque를 모두 비우는 거면 굳이 deque에 저장해 놓을 필요가 없다.

그냥 종료시점 값만 저장해 놓고 있으면 된다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글