[프로그래머스]level2-기능개발-Python[파이썬]

s2ul3·2022년 9월 21일
0

문제링크 : 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
    
profile
statistics & computer science

0개의 댓글