본문 바로가기

Algorithm & Data Structure

프로그래머스 - 기능개발

728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

<풀이>

from collections import deque

def solution(progresses, speeds):
    answer = []
    progresses = deque(progresses)
    speeds = deque(speeds)
    
    day = 0
    tmp = 0
    while progresses:
        p = progresses.popleft()
        s = speeds.popleft()
        
        for i in range(day,100):
            if p + s*i >= 100:
                tmp = tmp + 1
                day = i
                break
            else:
                if tmp > 0:
                    answer.append(tmp)
                    tmp = 0
    if tmp !=0:
        answer.append(tmp)
        
    return answer

큐에 대한 기본 개념인 LIFO와 스택의 FIFO를 이해하고 있다면 풀 수 있다.

앞에 존재하는 기능이 완성되어야 배포가 가능하기 때문에 day값을 계속 누적해서 가져가야한다.

완성된 기능의 개수인 tmp 값이 0이 아닐때 즉 마지막으로 완성된 기능이 1개 이상일때는 직접 answer 리스트에 추가해줘야 한다.

 

728x90
반응형