문제 링크 : programmers.co.kr/learn/courses/30/lessons/42586
queue에 각 작업마다 배포가 몇 일 후에 진행될 수 있는지를 저장한다.
이 때, 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발되면 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다. 따라서
여기서 저장하려는 배포 일자가 queue에 저장된 최대 배포 일자보다 크면 그동안 queue에 저장된 작업들을 배포할 수 있으므로 answer에 queue의 길이를 저장하고, queue를 비운다.
이러한 과정을 반복하고, 과정이 끝나면 queue에 남아 있는 작업들이 있을 수 있으므로 queue에 남은 작업이 있으면 queue의 길이를 answer에 추가한다.
import math
from collections import deque
def solution(progresses, speeds):
answer = []
queue = deque()
max_work_day = -1
for progress, speed in zip(progresses, speeds):
work_day = math.ceil((100 - progress) / speed) # 배포까지 걸리는 시간
if max_work_day < work_day:
if len(queue) > 0:
answer.append(len(queue))
queue.clear()
max_work_day = work_day
queue.append(work_day)
if len(queue) > 0:
answer.append(len(queue))
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이중우선순위큐 (0) | 2021.06.20 |
---|---|
[프로그래머스] 더 맵게 (0) | 2021.04.16 |
[프로그래머스] 주식가격 (0) | 2021.04.12 |
[프로그래머스] 위장 (0) | 2021.03.27 |
[프로그래머스] 전화번호 목록 (0) | 2021.03.26 |