프로그래머스/Lv.2
기능개발 - Pyton, Deque, Math.ceil
아찌방
2024. 11. 13. 11:14
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 - 나의 생각
첫번째 progress가 완료 되어야 뒤에 것들도 완료된다.
그러니까 첫번째 progress가 종료되는 날짜를 구하고
(math.ceil 을 쓰는 이유는 올림을 위해서이다.)
뒤에 progress들에도 일괄적으로 진행도를 더한다.
그 후 100이 넘어가는 progress들의 갯수를 세어준다.
100이 안 넘어가면 위의 과정을 반복한다.
코드
from collections import deque
import math
def solution(progresses, speeds):
progresses = deque(progresses)
speeds = deque(speeds)
answer = []
while progresses:
# 현재 배포까지 필요한 날짜 계산
day = math.ceil((100 - progresses[0]) / speeds[0])
# 모든 작업에 day만큼의 작업량 추가
progresses = deque([progress + speed * day for progress, speed in zip(progresses, speeds)])
# 완료된 작업 수 계산
count = 0
while progresses and progresses[0] >= 100:
progresses.popleft()
speeds.popleft()
count += 1
answer.append(count)
return answer
728x90