문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42586
문제설명
complete_days리스트를 만들고 for문을 돌려 값들을 비교할 때 처음에는 현재 값과 이전값을 비교하여 이전값이 현재값보다 같거나 클 때 cnt값을 증가하게 코드를 작성했다.
하지만 [5, 3, 4]일 경우 이 세 기능은 5일 후에 동시에 배포되어 3이 출력되어야하는데
처음에 작성한 코드로 돌릴경우 2, 1이 출력된다. (3과 4를 비교할 때 이전값이 현재값보다 작으므로 cnt가 증가하지 못하게됨.)
이를 해결하는 방법은 이전값과 비교하는 것이 아닌 이전값들 중 가장 큰값과 비교해야하는 것이다. 따라서 max_val 변수를 만들었다.
import math
def solution(progresses, speeds):
complete_days = [] # 작업 완성되는 시간
answer = []
for p, s in zip(progresses, speeds):
day = math.ceil((100 - p) / s)
complete_days.append(day)
# [7, 3, 9, 8, 10]
cnt = 1
max_val = complete_days[0]
for day in complete_days[1:]:
if max_val >= day:
cnt += 1
else: # max_val < day
answer.append(cnt)
max_val = day
cnt = 1
answer.append(cnt)
return answer