앞으로 priorityQueue절대 안씀ㅡㅡ
heapq최고
import heapq
def solution(program):
# answer 배열 초기화
answer = [0 for _ in range(11)]
# program을 호출 시각에 따라 정렬합니다.
program.sort(key=lambda x: x[1])
# 최소 힙
wait_heap = []
# 변수 초기화
pro_cnt, end_pro_cnt, time, pro_size = 0, 0, 0, len(program)
# 모든 프로그램이 끝날 때까지 반복
while end_pro_cnt != pro_size:
# 시작 시간이 time 이하인 프로그램들을 대기열에 추가
while pro_cnt < pro_size and time >= program[pro_cnt][1]:
# 힙에 (우선순위, 프로그램 정보)를 추가
heapq.heappush(wait_heap, (program[pro_cnt][0], program[pro_cnt]))
pro_cnt += 1
# 대기열에서 하나 꺼내어 처리
if wait_heap:
_, pro = heapq.heappop(wait_heap)
# 대기 시간 더하기
answer[pro[0]] += (time - pro[1])
# 현재 시간 갱신
time += pro[2]
end_pro_cnt += 1
else:
# 대기열이 비어있다면, 다음 프로그램의 시작 시간으로 시간을 이동
time = program[pro_cnt][1]
answer[0] = time
return answer

'백준 & 프로그래머스' 카테고리의 다른 글
프로그래머스 [PCCP 모의고사 #2] 2번 - 신입사원 교육 (1) | 2023.12.03 |
---|---|
프로그래머스 [PCCP 모의고사 #2] 1번 - 실습용 로봇.python (1) | 2023.12.03 |
[PCCP 모의고사 #1] 3번 - 유전법칙 (0) | 2023.11.30 |
프로그래머스.붕대감기.java (0) | 2023.11.28 |
프로그래머스.주차 요금 계산.py (1) | 2023.11.28 |
댓글