https://www.acmicpc.net/problem/11000Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.net
수업들 정렬하고
큐에는 수업 끝나는 시간 저장해서
수업 끝난 강의실에 수업이 들어갈 수 있으면 끝나는 시간 바꿔주고
아니면 수업 끝나는 시간 추가하는 식으로 풀었거든
근데 처음에 정렬할때 끝나는시간, 시작하는시간으로 하니까 죽어라 안되더라고(주석처리된 부분)
그냥 시작하는시간 순으로 정렬하니까 맞았음
아무리 해도 반례 못 찾겠고 논리적으로도 맞는거 같아서 왜 틀렸는지 모르겠음ㅜ
import heapq
n = int(input())
classes = [tuple(map(int, input().split())) for _ in range(n)]
classes.sort()
# classes.sort(key=lambda x : (x[1], x[0]))
ends = [classes[0][1]]
for i in range(1, n) :
start, end = classes[i]
if start >= ends[0] :
heapq.heappop(ends)
heapq.heappush(ends, end)
print(len(ends))
(5, 7), (3, 8), (1, 9) 반례 만들어보면 되잖아. 그리고 직관적으로 생각해도 강의실 시작 시간으로 정렬해야 필요한 강의실 수를 누락 안할 거 같아
이거는 결과 같음.
https://www.acmicpc.net/problem/1931
이 문제에선 끝나는 시간으로 정렬해서 똑같이 했어
끝나는 시간 순으로 정렬해버리면 다음 수업을 어느 강의실에서 할지 최적화가 안됨
예를 들어서 (1 5) (2 4) (4 6) (5 8)
아니 15 24 48 56
아아아아 그러네 ㄳㄳ 진작 갤에 물어볼걸