본문 바로가기
프로그래머스/Lv.2

기능개발 - Pyton, Deque, Math.ceil

by 아찌방 2024. 11. 13.

 

 

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