Data Structure/Queue

[프로그래머스 Lv.2] 기능개발

킹우현 2023. 9. 21. 15:34

 

프로그래머스

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

programmers.co.kr

from collections import deque

def solution(progresses, speeds):
    answer = []
    
    length = len(progresses)
    
    while len(progresses) > 0:
        
        count = 0
        
        remain = 100-progresses[0]
        
        if remain%speeds[0] != 0:
            remain = remain // speeds[0] + 1
        else:
            remain = remain // speeds[0]
        
        progresses = [value+(remain*speeds[i]) for i,value in enumerate(progresses)]
        
        for item in progresses:
            if item >= 100:
                count += 1
            else:
                break
        
        for _ in range(count):
            progresses.pop(0)
            speeds.pop(0)
            
        answer.append(count)
        
    return answer

이번 문제는 각 기능이 매초마다 개발되는 속도가 다르고 앞의 기능이 배포가 되어야 뒤에 기능도 배포가 될 수 있다는 가정 하에, 배포가 이루어질 때 마다 한번에 몇 개의 기능이 배포되는지 구하는 문제이다.

 

먼저 이 문제는 Queue 자료구조를 사용해야 하는 문제로, 기능들을 모두 배포할 때까지 while 문을 돌면서 큐의 가장 앞에 기능이 배포될 때 다른 기능들도 개발을 진행하여 개발 진행 상황을 업데이트 시켜주었다. (value + (remain*speeds[i])

 

그 후에 앞에서부터 개발 진행 상황이 100% 이상인 기능의 개수를 구한 뒤 answer에 추가해주고, 그 개수만큼 pop() 시켜주는 방식으로 풀이하였다 :)