title: "[프로그래머스] 단속카메라 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/42884"
description: "프로그래머스 Level 3 문제 [단속카메라]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(routes):
    # (진입/진출이 일어나는 지점, 진입/진출, 차량번호)의 리스트를 만들고,
    # 정렬합니다. (진입=0, 진출=1)
    events = []
    for i, (_in, _out) in enumerate(routes):
        events.append((_in, 0, i))
        events.append((_out, 1, i))
    events.sort()
    
    # event를 하나씩 읽어가면서,
    # 현재 고속도로에 진입해있으면서 카메라를 만나지 않은 차량의 집합 A를 관리합니다.
    # A에 있는 차량이 진출할때마다 A를 비우고, answer를 1 증가시키면 됩니다.
    A, answer = set(), 0
    for x, inout, i in events:
        if inout == 0:
            A.add(i)
        elif i in A and inout == 1:
            A = set()
            answer += 1
        
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges