[Programmers] 42586 기능 개발

[Programmers] 42586 기능 개발

문제 링크

스택또는 큐를 이용하는 문제로 분류되어있다. 매일 하루를 추가하는 반복문(while)내에서 조건이 달성되면 이를 종료하고 정답을 반환하도록 했다. 여기서 달성되어야하는 조건은 각 progresses 내의 데이터 합이 0이 되는 것으로, 완료된 작업에는 0을 할당하여 모든 작업이 마무리 도면 반복문을 탈출하여 정답을 반환할 수 있다.

정답은 당일 종료된 progress와 이전 progress의 종료 여부를 따지며 count하여 count한 수를 정답에 append했다.

나의 풀이

def solution(progresses, speeds):
    answer = []
    count = 0

    # print(progresses)
    # print(speeds)

    while sum(progresses) > 0:
        count = 0

        for i in range(len(progresses)):
            progresses[i] += speeds[i]
            if(progresses[i] >= 100):
                if(i == 0 or progresses[i-1] == 0):
                    count += 1
                    progresses[i] = 0
                    speeds[i] = 0

        # print(count, progresses, speeds)

        if(count > 0):
            answer.append(count)

        if(sum(answer) == len(progresses)):
            break;

    return answer

© 2021. All rights reserved.