«   2025/09   »
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 30
Recent Posts
Tags more
Today
Total
관리 메뉴

내 인생은 개발 중

[프로그래머스] 디스크 컨트롤러 - Python 본문

Algorithm/프로그래머스

[프로그래머스] 디스크 컨트롤러 - Python

seul.e 2024. 6. 11. 00:26

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

import heapq
def solution(jobs):
    answer, i, now = 0, 0, 0
    start = -1
    n = len(jobs)
    heap = []

    while i < n:
        for j in jobs:
            if start < j[0] <= now:
                heapq.heappush(heap, [j[1], j[0]])

        if len(heap) > 0:
            current = heapq.heappop(heap)
            start = now
            now += current[0]
            answer += now - current[1]
            i += 1
        else:
            now += 1

    return answer // n

 

처음엔 permutaion을 이용해서 풀었는데 시간초과가 났다.
heap에 대해서 이해를 잘 하지 못했는데 이 문제를 풀면서 heap에 대해서 이해를 할 수 있었다!
heapq 모듈을 사용하면 최소힙처럼 사용할 수 있는데 이를 이용해서 지금 처리할 수 있는 작업 중에서 가장 빠르게 끝나는 작업을 먼저 끝내는 로직을 구현할 수 있었다!

그냥 이 문제만 봤을땐 heap을 쓰는건지 아직 판단은 잘 못할듯 하댜 ㅠㅜ 더 열심히 많이 많이 풀어봐야게땨!!

Comments