찬우의 이것저것 Chanwoo's blog

[프로그래머스 python]기능개발

https://programmers.co.kr/learn/courses/30/lessons/42586

스택/큐의 레벨2문제

progresses speeds return
[93,30,55] [1,30,5] [2,1]

progresses 배열에 speeds를 한번씩 더하면서 100이 넘어가는지 체크해서 앞에서부터 빼면 되겠다

단 앞에 뒤에 기능이 먼저 100%가 되어도 앞에 기능이 완성되어야 배포 할 수 있기때문에

맨 앞이 100인지 체크해서 뽑아내는 방식으로 해결했다.

문제에 주어진 list를 가지고 하나씩 뺴다보니 마지막에 index error가 나기에 progresses와 speeds의 끝에 값을 하나씩 추가해주었다.(-1, 0) 그리고 -1이 남았다면 마지막까지 실행한것으로 판단하고 루프를 빠져나온다

def solution(progresses, speeds):
    day = 0
    ans = []

    progresses.append(-1)
    speeds.append(0)

    while True:
        day += 1
        for i in range(len(progresses)):
            progresses[i] += speeds[i]

        cnt = 0
        while progresses[0] >= 100:
            cnt += 1
            progresses.pop(0)
            speeds.pop(0)

        if cnt != 0:
            ans.append(cnt)

        if progresses[0] == -1:
            break
        # print(day, cnt, progresses, ans)

    return ans


# p, s = [93, 30, 55], [1, 30, 5] # [2, 1]
# p,s=   [10, 10, 10, 10], [10, 1, 10, 1] # [1, 3]
# print(solution(p, s))