[그리디] 11000

조은지·2022년 1월 4일
0

11000- 강의실 배정

링크 - https://www.acmicpc.net/problem/11000

코드

import sys
import heapq
input = sys.stdin.readline

n=int(input())

time =[list(map(int,input().split())) for _ in range(n)]

#시작시간 정렬 후 끝나는 시간 정렬
time = sorted(time,key = lambda x:(x[0],x[1]))

#필요한 방의 개수를 구하기 위한 리스트
room = []

for i in range(n):
  if len(room)==0:
    heapq.heappush(room,time[i][1])
  else:
    if time[i][0]>=room[0]:
        heapq.heappop(room)
        heapq.heappush(room,time[i][1])
    else:
        heapq.heappush(room,time[i][1])

print(len(room))
  1. 회의시간을 입력받고 시작시간, 끝나는 시간 순으로 오름차순 정렬을 한다.
  2. 최소힙을 사용하여 이전 회의 종료 시간과 현재 회의 시작 시간을 비교한다.
    2-1. 현재 회의 시작 시간 >= 이전 회의 종료 시간이면 값을 바꾼다. (pop & push 연산)
    2-2. 아니라면 값을 추가한다. (회의실의 개수가 증가)
  3. room 리스트의 요소의 개수를 출력한다.

0개의 댓글