성장일기

[python] 백준 1374 - 강의실 본문

알고리즘 문제

[python] 백준 1374 - 강의실

김몽몽 2022. 1. 21. 10:32

https://www.acmicpc.net/problem/1374

Q>

N개의 강의가 있고, 시작시간과 끝나는 시간을 알고 있다.

종료시간과 시작시간이 겹치는 것은 상관 없다.

최소 강의실 개수 출력

 

🧨 강의실 번호 num은 안쓰인다!

이런 유형의 문제를 많이 포스팅했지만

푸는 방법이 다 똑같다.

코드도 거의 복붙수준

원리를 알고 있으면 써먹기 좋은것 같다👍

아래 문제와 거의 똑같음

 

[python] 백준 19598 - 최소 회의실 개수

https://www.acmicpc.net/problem/19598 Q> 주어진 회의를 모두 진행할 수 있는 회의실의 개수 구하기 회의의 시작 시간은 끝나는 시간보다 항상 작다 🧨아래 문제랑 똑같은 코드로 풀린다🤔 시작시간과

hyojeong94.tistory.com

 

import sys
import heapq
input=sys.stdin.readline

n = int(input().rstrip())  # 강의 갯수

study = []
for _ in range(n):
    num, start, end = map(int, input().split())  # 강의번호, 시작시간, 끝시간
    study.append([start, end])  # 시작시간, 끝시간
    
study.sort()

rooms = []
heapq.heappush(rooms, study[0][1])  # 가장 처음 시작하는 강의를 넣어줌

for i in range(1, n):  # 첫 강의를 이미 넣었기때문에 1부터 인덱스 시작
    if study[i][0] < rooms[0]:  # 시작시간이 들어가있는것보다 작으면(빠르면)
        heapq.heappush(rooms, study[i][1])  # 힙에 새로 넣어줌
    else:  #시작시간보다 느리지 않으면
        heapq.heappop(rooms)  # 가장 작은 수를 pop하고
        heapq.heappush(rooms, study[i][1])  # 끝나는 시간을 넣어줌
        
print(len(rooms))

'알고리즘 문제' 카테고리의 다른 글

[python] 백준 1874 - 스택 수열  (0) 2022.02.04
[python] 백준 6064 - 카잉 달력  (0) 2022.01.26
골드 5 🎉  (0) 2022.01.20
[python] 백준 1990 - 소수인팰린드롬  (0) 2022.01.20
[python] 백준 8892 - 팰린드롬  (0) 2022.01.20