[프로그래머스]기능 개발-스택/큐
SW개발/코딩테스트

[프로그래머스]기능 개발-스택/큐

문제 설명

 

import math

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

 

코드 설명

progresses 리스트에 값이 있는 동안 반복문을 수행한다. 먼저 progresses 리스트와 speeds 리스트를 더해서 1일이 지난 후의 작업량을 구해준다. 그 후 progresses 리스트에 값이 존재하고 progress[0]의 값이 100이상 이라면 (기능 개발이 완료 되었다면) 두개의 리스트에서 pop 을 하여 원소를 삭제 시킨다. 그리고 cnt 값을 1 증가시켜 몇개의 기능이 완료됬는지 카운트 해준다. 만약 카운트에 값이 1 이상이라면(기능 개발이 1개 이상 되었다면) 바로 answer 리스트에 넣어준다.

 

Point : 먼저 큐의 원리를 이해할 필요가 있다. 큐는 선입선출로 작동하게 된다. 기능 배포의 우선순위는 앞쪽에 있기에 두개의 리스트(progresses, speeds)를 큐로 생각하면 쉽게 풀이할 수 있다. 큐로 인식하면 완성된 기능 순부터 차례로 배포를 진행 할 수 있게 된다.

728x90