heap
리스트에 회의의 시작시간을 기준으로 push
heap
리스트의 첫번째 값이 해당 회의의 끝나는 시간보다 늦다면 heap
리스트에서 뽑은 회의의 끝나는 시간으로 교체answer
보다 크다면 answer
값 갱신heap
리스트에 값이 존재하는 동안 반복heap
리스트가 비어있거나, 비어있진 않지만 첫번째 값이 현재 들고있는 회의 정보의 시작시간보다 느리다면, answer
에 +1
시켜준 후 회의 정보의 끝나는 시간을 heap
에 추가heap
리스트 첫번째 값보다 느리거나 같을 경우 heap
리스트의 첫번째 값을 뺀 후 현재 회의 정보의 끝나는 시간을 추가📌 heap
리스트를 현재 진행중인 회의 정보를 나타내는데 사용
서준이는 아빠로부터 N개의 회의를 모두 진행할 수 있는 최소 회의실 개수를 구하라는 미션을 받았다.
각 회의는 시작 시간과 끝나는 시간이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다.
단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다.
회의의 시작 시간은 끝나는 시간보다 항상 작다. N이 너무 커서 괴로워 하는 우리 서준이를 도와주자.
import sys, heapq
input = sys.stdin.readline
N = int(input())
heap = []
for _ in range(N):
heapq.heappush(heap, tuple(map(int, input().split())))
answer = 0
rooms = []
while heap:
start, end = heapq.heappop(heap)
if rooms:
if min(rooms) <= start:
rooms[rooms.index(min(rooms))] = end
continue
rooms.append(end)
if len(rooms) > answer:
answer = len(rooms)
print(answer)
import sys, heapq
input = sys.stdin.readline
N = int(input())
conferences = [tuple(map(int, input().split())) for _ in range(N)]
conferences.sort()
answer = 0
heap = []
for start, end in conferences:
if (not heap or heap[0] > start):
answer += 1
heapq.heappush(heap, end)
else:
heapq.heappop(heap)
heapq.heappush(heap, end)
print(answer)