문제풀이/기타

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

딜레이레이 2022. 11. 16. 16:03
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

def solution(progresses, speeds):
    answer = []
    publish = 0
    prev = 0
    while publish < len(progresses):
        if progresses[publish] >= 100:
            while publish != len(progresses) and progresses[publish] >= 100:
                publish += 1
            if len(answer) != 0:
                answer.append(publish-prev)
            else:
                answer.append(publish)
        prev = publish    
        for i in range(publish, len(progresses)):
            progresses[i] += speeds[i]

    return answer

아래는 deque를 이용하여 progresses와 speeds의 원소들을 pop하며 풀어본 결과이다.

from collections import deque

def solution(progresses, speeds):
    answer = []
    progresses = deque(progresses)
    speeds = deque(speeds)
    while progresses:
        cnt = 0
        while progresses and progresses[0] >= 100:
            progresses.popleft()
            speeds.popleft()
            cnt += 1
        for i in range(len(progresses)):
            progresses[i] += speeds[i]
        if cnt > 0:
            answer.append(cnt)
                
    return answer