728x90
https://www.acmicpc.net/problem/11000
그리디 알고리즘으로 풀었다.
강의 시간을 정렬한 다음 모든 강의 시간을 순회하면서 힙 answer에 데이터를 추가하거나 수정하는 방식이다.
추가하는 시간은 해당 강의실의 강의가 끝나는 시간을 나타낸다. python의 heap은 최소힙이므로 0번째(top)가 최솟값이 되고 항상 모든 강의실 중 가장 빨리 끝나는 시간을 나타내므로, 강의실을 계속 사용해도 되는지 아니면 하나 더 사용해야하는지 판단할수 있다.
import sys; input = sys.stdin.readline
from heapq import heappop, heappush
def main():
N = int(input())
lst = sorted([tuple(map(int, input().split())) for _ in range(N)])
answer = []
for s, t in lst:
if not answer:
heappush(answer, t)
else:
if s >= answer[0]:
heappop(answer)
heappush(answer, t)
else:
heappush(answer, t)
print(len(answer))
if __name__ == "__main__":
main()
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 17471 게리맨더링 python (0) | 2022.03.07 |
---|---|
[백준] 15655 N과 M(6) python (0) | 2022.02.28 |
[백준] 14502 연구소 python (0) | 2022.02.26 |
[백준] 15664 N과 M(10) python (0) | 2022.02.24 |
[백준] 21939 문제 추천 시스템 Version 1 python (0) | 2022.02.23 |