[Python][프로그래머스][Level2] 기능개발

[Python][프로그래머스][Level2] 기능개발

코드

def solution(progresses, speeds):
    answer = []
    cnt=0
    progresses.reverse()
    speeds.reverse()
    while progresses:
        speed=speeds.pop()
        a,b=divmod(100-progresses.pop()-cnt*speed,speed)
        cnt+=a if b==0 else a+1
        answer.append(1)
        while progresses and progresses[-1]+cnt*speeds[-1]>=100:
            progresses.pop()
            speeds.pop()
            answer[-1]+=1
    return answer

첫 번째 기능부터 수행하기 때문에 pop을 위해서 reverse해줬다.

첫 번째 기능이 걸리는 시간을 계산해 cnt에 더한다.

다음 기능들이 순서대로 cnt 보다 적은 시간에 완료가 된다면

해당 기능을 pop하고 배포수를 늘린다.

이 과정을 progresses가 모두 배포될 때 까지 반복한다.

Discussion and feedback