문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42586
문제 접근
코드를 풀이할 때 적었던 플로우가 있나요?
각 progress 에 대해 개발 완료 까지 추가 Days 계산하기
같은 배포일을 가진 서비스 개수 구하기
deque 로 develop_day 보다 더 빠르게 종료되는 서비스들은 pop & 배포 서비스 개수 +1
develop_day보다 더 개발완료 까지 오래 걸리는 서비스을 만날 경우 , 그 전 서비스 까지 한번에 배포 진행
→ 그전 서비스 개수를 정답 answer리스트에 추가
"""
# 구현
# flow
1. 각 progressese 별로 마감까지 걸리는 추가 기간 구하기
Day = round((100 - pregress[i]) / speedsp[i], 0 )
- 각 day 리스트에 넣기
[7,3,9]
2. stack 으로 p값 보다 큰 값이 나올때 까지 빼기
for p in range(len(days)) : # 이전 progress 의 pointer
a =0
(1) if days[p] <= days[j] :
a += 1
else : # 클
"""
import math
from collections import deque
def solution(progresses, speeds):
answer = []
# 1. progress별로 추가 Day 구하기
days= deque([0 for _ in range(len(progresses))])
for i in range(len(progresses)) :
days[i] = math.ceil((100 - progresses[i]) / speeds[i])
# print(days)
#2. 같은 배포일을 가진 서비스 개수들 구하기
while days :
tmp = 0
develop_day = days[0]
# deque로 develop_days보다 더 빠르게 종료되는 서비스들은 pop
while days and develop_day >= days[0] :
tmp += 1
days.popleft()
# 해당 develop_day보다 큰 경우, 그 전까지 서비스들이 같은 배포일 가짐
answer.append(tmp)
return answer