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
'SW개발 > 코딩테스트' 카테고리의 다른 글
[백준]2750번, 2751번 수 정렬하기 1, 2 - 정렬 (0) | 2020.11.30 |
---|---|
[프로그래머스]다리를 지나는 트럭-스택/큐 (0) | 2020.11.29 |
[프로그래머스]주식가격-스택/큐 (0) | 2020.11.27 |
[프로그래머스]H-Index-정렬 (0) | 2020.11.26 |
[프로그래머스]가장 큰 수-정렬 (0) | 2020.11.25 |