Search
Duplicate

[1차] 추석 트래픽

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

END, START = 0, 1 # END에 우선순위를 줘야 함에 주의한다! def startend(s): # 초 단위로 계산해서, 시작 시간과 (종료 시간+1)을 리턴합니다. date, hms, duration = s.split() endtime = float(hms.split(':')[0]) * 3600 + float(hms.split(':')[1]) * 60 + float(hms.split(':')[2]) duration = float(duration[:-1]) starttime = endtime - (duration - 0.001) return starttime, endtime + 1.0 def solution(lines): # 모든 interval을 end 방향으로 1초 늘린 뒤, # 한 시점에 존재하는 가장 많은 interval의 개수를 리턴합니다. startends = [tuple(startend(s)) for s in lines] events = [] for start, end in startends: events.append((end, END)) events.append((start, START)) events.sort() n, mx = 0, -1 for t, typ in events: if typ == START: n += 1 if n > mx: mx = n else: n -= 1 return mx
Python
복사

출처

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