[프로그래머스-Python] 기능개발
내용
기능(progresses)은 진도가 100일때 서비스 반영된다고할 때 진도율(speeds)는 하루 단위로 이루어 진다고 한다.
이때, 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
입력 형식
🞄 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
🞄 작업 진도는 100 미만의 자연수입니다.
🞄 작업 속도는 100 이하의 자연수입니다.
🞄 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다.
예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
progresses | speeds | return |
---|---|---|
[93, 30, 55] | [1, 30, 5] | [2, 1] |
[95, 90, 99, 99, 80, 99] | [1, 1, 1, 1, 1, 1] | [1, 3, 2] |
from math import ceil
def solution(progresses, speeds):
last = 0
idx = -1
result =[]
for pro, sp in zip(progresses, speeds) :
day = ceil((100-pro)/sp)
if(last < day) :
idx +=1
result.append(0)
result[idx] +=1
last = day # day가 긴 날을 기준으로 그것보다 작은 날은 그 날에 포함시키기
else :
result[idx] += 1
return result
코드 설명
-
남은 일수와 진도율을 나누고 나누어떨어지지 않는 경우 올림을 해주어서 기능 배포가 이루어지는 날짜를 구해준다.
-
기능 개발은 동시에 이루어지지만 순차적으로 진행되야 하기 때문에 지난날보다 새로 들어온 날의 값이 작은 경우 지난날 배포일 수에 포함시켜 주고 새로들어온 값이 더 클 경우 해당 날을 리스트에 추가시킨다.
Author And Source
이 문제에 관하여([프로그래머스-Python] 기능개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@good159897/프로그래머스-Python-기능개발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)