def solution(progresses, speeds):
answer = []
# 배포가 며칠 후부터 가능한지를 담는 리스트
distributable_day = []
for progress, speed in zip(progresses, speeds):
# 진도가 100%가 될 때까지 걸리는 일수
spend_days = 100 - progress
if spend_days % speed == 0:
distributable_day.append(spend_days // speed)
# spend_days가 speed의 배수가 아니면
# 진도가 100%가 넘어가기 위해서는 spend_days를 speed로 나눈 값에 +1을 해준 만큼 걸린다.
else:
distributable_day.append(spend_days // speed + 1)
# [배포하는 날, 배포되는 기능의 개수]
day = [distributable_day[0],0]
for d in distributable_day:
# 배포가 가능한 기능이라면
# (배포하는 날 이전에 이미 진도가 100%가 되었다면)
if d <= day[0]:
day[1] += 1 # 배포되는 기능의 개수 +1
else:
# 정답 리스트에 현재까지 배포할 수 있는 기능의 개수를 넣는다
answer.append(day[1])
# 배포하는 날 갱신
day = [d, 1]
answer.append(day[1])
return answer
프로그래머스에서 알고리즘 유형을 스택/큐 라고 명시해주었지만 스택이나 큐를 사용하지 않고 풀었다. 만약 유형을 모르고 이 문제를 풀었다면 스택이나 큐를 써볼 생각을 하지 못했을 거라고 생각했기 때문이다.
그런데 제출하고 큐로 푼 사람들의 풀이를 보니 아무래도 '순차적으로 진행되는 작업'과 같은 주제의 문제는 큐를 사용해서 풀어야 더 깔끔하다는 것을 알게됐다.
하지만 문제 푸는 방식 자체에는 큰 차이가 없어 따로 블로그에 그 코드들을 가져오지는 않았다.