문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges