728x90
https://www.acmicpc.net/problem/19598
import sys
import heapq
input = sys.stdin.readline
n = int(input())
times = []
temp = []
for _ in range(n):
start, end = map(int, input().split())
times.append([start, end])
times.sort() # 시작 시간을 기준으로 오름차순 정렬
temp.append(times[0][1]) # 첫번째 원소를 넣기 (s, e)
for i in range(1, n):
start, end = times[i][0], times[i][1]
e = temp[0] # 회의 끝나는 시간 , 우선순위 큐에서 가장 작은 것
if e > start: # 새로운 회의실을 사용해야 하는 경우
heapq.heappush(temp, end) # 우선순위 큐
else: # e <= start : 같은 회의실을 사용할 수 있는 경우
heapq.heapreplace(temp, end)
# 원래는 배열을 이용해서 풀었고, 사용가능한 회의실을 찾을 때 for문으로 선형탐색을 함 -> 이중 for문 수행 필요 -> 시간초과
# 우선순위 큐를 사용해도 되는 문제이다 끝나는 시간이 제일 빠른 방을 사용하면 되기 때문
print(len(temp))
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 5972 택배배송 Python (0) | 2022.10.26 |
---|---|
[백준] 14503 로봇청소기 in Python (0) | 2022.10.23 |
[백준] 21314번: 민겸수 Python (0) | 2022.10.21 |
[백준] 21318 피아노체조 Python (0) | 2022.10.21 |
[백준/삼성기출] 21610 마법사 상어와 비바라기 Python (1) | 2022.10.15 |