강의로 돌아가기
조환열

heap을 이용한 풀이

jobs를 heapify 시키고, 현재 time에 가능한 목록을 새로운 heap에 넣는다. 넣어놓은 목록을 제거하지 않고 그때그때 추가후, 남은 heap 전체 pop

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import heapq
def solution(jobs):
    answer = 0
    length = len(jobs)
    heapq.heapify(jobs)
    time = 0
    heap = []
    while(jobs):           
        while(jobs):      #그때그때 시간에 따라 가능한 목록을 힙에 넣고
            x,y= heapq.heappop(jobs)
            if x>time:
                heapq.heappush(jobs,[x,y])
                break
            else:
                heapq.heappush(heap,[y,x])

        if len(heap)==0:      #힙에 아무것도 없으면 time 증가, 있다면 pop한다
            time += 1
        else:
            a,b = heapq.heappop(heap)
            answer += (a+time-b)
            time += a
    while heap:              # 남아 있는 힙 순서대로 pop
        a,b = heapq.heappop(heap)
        answer += a+time-b
        time += a
        print(time)

    return answer//length
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.