본문 바로가기
코딩테스트

[파이썬] 기능개발 - 스택/큐 [CODING TEST #45]

by ALTERww 2022. 8. 7.
320x100

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

 

 

리스트를 스택처럼 생각하여, 맨 앞의 progress가 stack의 top이라고 치면 위의 progress부터 빠져나갈 수 있도록 구현해야 한다. 

나는 간단하게 각 day마다 맨 앞에서부터 progress가 100 이상인 경우를 count하도록 구현했다.

 

def solution(progresses, speeds):
    answer = []
    length = len(progresses)
    
    while sum(answer) < length:
        complete = 0
        # 각 progress에 speed를 더함
        for i in range(len(progresses)): 
            progresses[i] += speeds[i]
        
        # 앞에서부터 progress가 100 이상인지 check.
        # 앞의 모든 progress가 100 이상이어야 그 뒤의 progress도 배포될 수 있다.
        for idx, progress in enumerate(progresses):
            if complete == idx and progress >= 100:
                complete += 1
        
        # 배포된 progress와 대응되는 speed를 함께 제외시킴
        progresses = progresses[complete:]
        speeds = speeds[complete:]
        
        # 배포된 경우, answer에 추가
        if complete != 0:
            answer.append(complete)
    return answer

댓글