반응형
import heapq
import sys
n = int(sys.stdin.readline())
heap = []
q = []
count = 0
for _ in range(n):
num, start, end = map(int,sys.stdin.readline().split())
heapq.heappush(heap, [start,end,num])
start, end, num = heapq.heappop(heap)
heapq.heappush(q, end)
while heap:
start, end, num = heapq.heappop(heap)
if q[0] <= start:
heapq.heappop(q)
heapq.heappush(q, end)
print(len(q))
설명
두 개의 힙큐를 만들어 준 다음, 강의실의 시작시간과 끝나는 시간과 번호를 힙큐(heap)에다가 넣어주고, 다른 힙큐(q)에다가 힙큐(heap)를 pop해서 끝나는 시간을 넣어준 다음, while문을 돌리면서 힙큐(q)와 힙큐(heap)에서 pop 한 시작 시간을 비교해주면서 시작시간이 힙큐(q)에서 뽑은 값보다 늦이면 힙큐(q)를 pop해준다. 힙큐(q)에다가 힙큐(heap)에서 pop한 끝나는 시간을 다시 push해주는 것을 힙큐(heap) 원소가 다 빠질 때까지 반복한다.
heap은 그냥 강의실을 시작시간 기준으로 정렬해놓는 힙큐이고, q는 진행중인 강의 중 끝나는 시간이 가장 이른 것을 뽑아준다고 보면 된다.
(num은 의미없다.)
문제점
딱히 없다.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 1715번: 카드 정렬하기 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |
---|---|
백준 11000번: 강의실 배정 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |
백준 1342번: 행운의 문자열 파이썬코드(백트래킹) (0) | 2021.07.11 |
백준 1717번: 집합의 표현 파이썬 코드(유니온파인드, Union-find) (0) | 2021.07.10 |
백준 4485번: 녹색 옷 입은 애가 젤다지? 파이썬 코드(다익스트라) (0) | 2021.07.10 |