[프로그래머스-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

코드 설명

  1. 남은 일수와 진도율을 나누고 나누어떨어지지 않는 경우 올림을 해주어서 기능 배포가 이루어지는 날짜를 구해준다.

  2. 기능 개발은 동시에 이루어지지만 순차적으로 진행되야 하기 때문에 지난날보다 새로 들어온 날의 값이 작은 경우 지난날 배포일 수에 포함시켜 주고 새로들어온 값이 더 클 경우 해당 날을 리스트에 추가시킨다.

좋은 웹페이지 즐겨찾기