[프로그래머스] 운영체제 (Python)

yuuforest·2023년 8월 7일

알고리즘

목록 보기
4/8
post-thumbnail

프로그래머스 문제 풀이 - PCCP 모의고사 #1

📰 문제


문제 확인 🏃


💡 입출력 예제


[[2, 0, 10], [1, 5, 5], [3, 5, 3], [3, 12, 2]]

>> [20, 5, 0, 16, 0, 0, 0, 0, 0, 0, 0]
[[3, 6, 4], [4, 2, 5], [1, 0, 5], [5, 0, 5]]

>> [19, 0, 0, 4, 3, 14, 0, 0, 0, 0, 0]

[[3, 6, 4], [4, 2, 5], [1, 0, 5], [5, 20, 5]]

>> [25, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0]

💬 풀이


🎵 첫번째 풀이

import heapq

def solution(program):

    answer = [0] * 11
    heap = []                            # 우선순위 큐

    program.sort(key=lambda x: (x[1], x[0]))    # 호출된 시각과 우선순위를 기준으로 정렬

    time = 0

    while program or heap:
        
        while program and program[0][1] <= time:
            heapq.heappush(heap, program.pop(0))

        if program and not heap:
            time = program[0][1]
            heapq.heappush(heap, program.pop(0))

        temp = heapq.heappop(heap)

        answer[temp[0]] += (time - temp[1])
        time += temp[2]

    answer[0] = time
    return answer

✒️ 생각


제시되어 있는 예제만 생각해서 코드를 작성하니까 채점했을 때 하나도 빠짐없이 런타임에러.. 😑 으익
다른 상황에서의 테스트케이스를 생각하고 고려하여 코드를 작성하니 바로 성공했당 😊

profile
🐥 Backend Developer 🐥

0개의 댓글