프로그래 머스#42586. 기능개발 : 구현, 큐/lv2

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42586

🔍 Inspection

문제 접근

유형: queue

🚩 FLOW

코드를 풀이할 때 적었던 플로우가 있나요?

  1. 각 progress 에 대해 개발 완료 까지 추가 Days 계산하기

  2. 같은 배포일을 가진 서비스 개수 구하기

    1. deque 로 develop_day 보다 더 빠르게 종료되는 서비스들은 pop & 배포 서비스 개수 +1

    2. 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

🚩결과