honey_pot

[python] 디스크 컨트롤러 본문

문제 풀이

[python] 디스크 컨트롤러

_tera_ 2022. 9. 29. 02:17

https://school.programmers.co.kr/learn/courses/30/lessons/42627


heapq 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import heapq
def solution(jobs):
    answer, i, now = 0,0,0
    start = -1
    heap = []
    while i < len(jobs) :
        for job in jobs:
            if start < job[0<= now:
                heapq.heappush(heap, [job[1],job[0]])
        if len(heap) > 0:
            cur = heapq.heappop(heap)
            start = now
            now += cur[0]
            answer += now - cur[1]
            i += 1
        else:
            now += 1
    return answer//len(jobs)
cs

 

list 풀이

start보다 진입 시간이 작거나 같아야 한다

반복문을 다돌고 jobs는 아직 남았는데 진입시점이 start 보다 큰 경우 = 자리가 있는데 수행할 일이 없는 경우 start += 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(jobs):
    answer = 0
    n = len(jobs)
    jobs.sort(key=lambda x: x[1])
    start = 0 # 시작 시간
    while jobs:
        for i, job in enumerate(jobs):
            if job[0<= start:
                start += job[1]
                answer += start - job[0]
                del jobs[i]
                break
            if i == len(jobs) - 1:
                start += 1
    return answer//n
cs

'문제 풀이' 카테고리의 다른 글

[Python] 1911번: 흙길 보수하기  (0) 2022.10.30
[python] 입국심사  (0) 2022.09.30
[Python] 가장 먼 노드  (0) 2022.09.28
[Python] 섬 연결하기  (0) 2022.09.28
[Python] 보석 쇼핑  (1) 2022.09.23
Comments