[프로그래머스] 기능개발

Arin·2026년 1월 13일

import math

def solution(progresses, speeds):
    answer = []
    days = [] # 작업 일 수 
    
    for i in range(len(progresses)):
        d = math.ceil((100 - progresses[i])/speeds[i])
        days.append(d)
    
    count = 0
    max_day = days[0]
    
    for day in days:
        if day <= max_day:
            # 묻어가기
            count += 1
        else:
            answer.append(count)
            max_day = day
            count = 1 # 현재 day추가
            
    answer.append(count) # 마지막 배포
    return answer

📌 1. 유형

앞에 있는 기능이 배포되어야 뒤에 있는 기능도 배포 가능.
-> FIFO(큐)

📌2. 헷갈린 부분

첫번째 기능이 완료되면 두번째 기능이 완료되지 않아도 세번째 기능을 배포 가능하다고 생각했다. 그러나 이 문제는 앞에 기능이 완료되어야 뒤에 기능도 배포 가능하기 때문에 불가능하다. 따라서 O(N)으로 탐색이 가능하다.

📌3. 핵심

이중 for문 쓰지 말고, max_day (기준값) 변수 하나만 갱신하면 된다.

profile
헤맨만큼 내 땅

0개의 댓글