프로그래머스_기능개발

최효준·2023년 4월 8일
0

알고리즘 문제풀이

목록 보기
60/61

문제


풀이

각 작업들은 순서대로 배포되어야 한다는 조건이 있으므로 생각보다 간단하게 풀 수 있다. 남은 작업량을 계산해주고 speed로 나눈 뒤 소수점이 생기면 무조건 올림하여 작업일을 구한다. 최초의 작업일을 설정해주고 다음의 작업일들을 계산하면서 기존 작업일보다 작거나 같은 경우 cnt를 증가시킨다. 그러는 도중 기존 작업일보다 큰 수가 나오면 cnt값을 answer에 저장하고 작업일을 업데이트 한다. 끝까지 갈때 작업일이 더 큰 수가 안나올 경우엔 for문이 끝난 뒤 answer에 cnt를 추가한다.

풀이코드

import math
def solution(progresses, speeds):
    answer = []
    total = 100
    days = 0
    cnt = 1
    for a, b in zip(progresses, speeds):
        rest = total - a
        if days == 0:
            days = rest / b
            days = math.ceil(days)
        else:
            if days >= rest/b:
                cnt += 1
            else:
                answer.append(cnt)
                cnt = 1
                days = math.ceil(rest / b)
    answer.append(cnt)
        
    return answer
profile
Not to be Number One, but to be Only One

0개의 댓글