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() 시켜주는 방식으로 풀이하였다 :)
'Data Structure 🛠️ > Queue' 카테고리의 다른 글
[소프티어 6270번] GBC (0) | 2024.06.19 |
---|---|
[프로그래머스 PCCP 모의고사 3번] 카페 확장 (0) | 2023.11.11 |
[프로그래머스 Lv.2] 다리를 지나는 트럭 (0) | 2023.09.21 |
[프로그래머스 Lv.2] 프로세스 (0) | 2023.09.21 |
[SWEA 5099번] 피자굽기 (0) | 2023.09.21 |