CourseScheduleIII

Published at 2022-06-19

class Solution:
    def scheduleCourse(self, courses: List[List[int]]) -> int:
        q = []
        days = 0
        
        courses.sort(key=lambda x:x[1])
        
        for course in courses:
            if days+course[0] <= course[1]:  # 총 걸린일수랑 이번에 걸리는 일 수 합친게 더 적어야
                days += course[0]
                heappush(q, -course[0])  # 큰 순으로 정렬되라고 음수로 저장
            
            elif q and -q[0] > course[0]:  # 저장된게 지금 걸리는거보다 더 오래걸리면 지금껄로 대체하기
                days += course[0] + heappop(q)
                heappush(q, -course[0])
                
        return len(q)