각 작업들은 순서대로 배포되어야 한다는 조건이 있으므로 생각보다 간단하게 풀 수 있다. 남은 작업량을 계산해주고 speed로 나눈 뒤 소수점이 생기면 무조건 올림하여 작업일을 구한다. 최초의 작업일을 설정해주고 다음의 작업일들을 계산하면서 기존 작업일보다 작거나 같은 경우 cnt를 증가시킨다. 그러는 도중 기존 작업일보다 큰 수가 나오면 cnt값을 answer에 저장하고 작업일을 업데이트 한다. 끝까지 갈때 작업일이 더 큰 수가 안나올 경우엔 for문이 끝난 뒤 answer에 cnt를 추가한다.
import math
def solution(progresses, speeds):
answer = []
total = 100
days = 0
cnt = 1
for a, b in zip(progresses, speeds):
rest = total - a
if days == 0:
days = rest / b
days = math.ceil(days)
else:
if days >= rest/b:
cnt += 1
else:
answer.append(cnt)
cnt = 1
days = math.ceil(rest / b)
answer.append(cnt)
return answer