728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/42586
📌 문제 접근 방법
- 먼저 progresses와 speeds를 queue로 만들어줬다.
- progresses가 빌 때까지 작업과 배포를 반복한다.
- 작업은 progresses의 0번째 작업과 speeds의 0번째 속도를 더해서 progresses의 마지막에 다시 push해줬다.
- 배포는 progresses를 순회하며 앞에서부터 작업량이 100이 넘은 작업의 개수를 cnt에 저장하고 100이 넘지 않는 작업을 만나면 break로 반복문을 종료해줬다.
- cnt만큼 작업이 배포되었으므로 cnt를 answer에 저장해주고, progresses와 speeds는 cnt만큼 pop해준다.
📌 코드
from collections import deque
def solution(progresses, speeds):
progresses = deque(progresses)
speeds = deque(speeds)
answer = []
while progresses:
n = len(progresses)
# 작업
for _ in range(n):
progresses.append(progresses.popleft() + speeds[0])
speeds.append(speeds.popleft())
# 배포
cnt = 0
for i in range(n):
if progresses[i] >= 100:
cnt += 1
else:
break
if cnt:
answer.append(cnt)
for _ in range(cnt):
progresses.popleft()
speeds.popleft()
return answer
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 튜플 (0) | 2021.12.16 |
---|---|
[PG/Python] 가장 먼 노드 (0) | 2021.12.09 |
[PG/Python] 불량 사용자 (0) | 2021.12.08 |
[PG/Python] 큰 수 만들기 (0) | 2021.12.02 |
[PG/Python] 멀쩡한 사각형 (0) | 2021.12.01 |
댓글