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

임윤희·2025년 3월 30일

기능개발

🔍 알고리즘 분류

💡 문제 풀이

  1. 각 작업의 배포까지 남은 일수 저장 리스트 remains
    • 나머지가 있을 경우 하루 추가
  2. remains 순회하며
    1) 뒷 작업이 앞 작업보다 남은 일수가 작거나 같을때
    • 한 번에 배포하는 작업 개수인 cnt 증가
    2) 뒷 작업의 남은 일수가 앞 작업보다 클 때
    • 앞 작업 배포: answercnt 추가
  3. 마지막 배포 추가

📄 코드

  • Python
from math import ceil

def solution(progresses, speeds):
    answer = []
    remains = []
    
    # 각 작업의 배포까지 남은 일수
    for idx, progress in enumerate(progresses):
        remains.append(ceil((100 - progress) / speeds[idx]))
        
    current = remains[0]
    cnt = 1
    
    for day in remains[1:]:
        if day <= current: # 배포 쌓인 경우
            cnt += 1 # 배포할 작업수 증가
        else: # 배포
            answer.append(cnt)
            current = day
            cnt = 1
    
    answer.append(cnt) # 마지막 배포
    
    return answer

0개의 댓글