티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/42627
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 풀이
- 현재 시간까지 요청된 모든 작업들 중에서 가장 작업 소요 시간이 짧은 것부터 처리하자 ➡ 최소 heap
heap에 요청된 작업을 모두 넣어두고 나서 한 개를 꺼내면, 바로 그것이 가장 짧은 소요 시간을 가지는 작업이다.
현재 시간 time에서 가장 짧은 작업의 작업 시간만큼 더해서 해당 작업이 처리됐음을 표현한자.
만약 현재 시간까지 요청된 작업이 없다면, 1초를 증가하고 다시 요청 작업이 있는지 확인하는 작업을 반복하자
2. 정답 코드
def solution(jobs):
from heapq import heappush, heappop
jobs.sort(reverse=True)
n = len(jobs)
turnaround = 0
processed = 0
time = 0
candidate = []
while processed < n:
while jobs and jobs[-1][0] <= time:
requested, duration = jobs.pop()
heappush(candidate, (duration, requested)) # switch position
if not candidate:
time += 1
continue
current = heappop(candidate)
time += current[0]
turnaround += time - current[1]
processed += 1
return turnaround // n
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 구명보트 파이썬 풀이 (0) | 2024.03.29 |
---|---|
[프로그래머스] 여행경로 파이썬 풀이 (0) | 2024.03.28 |
[프로그래머스] 단어 변환 파이썬 풀이 (0) | 2024.03.27 |
[프로그래머스] 피로도 파이썬 풀이 (0) | 2024.03.26 |
[프로그래머스] 카펫 파이썬 풀이 (0) | 2024.03.26 |