프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
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]
Code
def solution(progresses, speeds): answer, baepo = [], [] for pro, speed in zip(progresses, speeds): day, na = divmod((100-pro),speed) if na != 0: day += 1 baepo.append(day) max_d = 0 if len(baepo) == 1: return [1] for idx in range(len(baepo)): if idx == 0: max_d = baepo[idx] answer.append(1) elif idx == len(baepo)-1: if baepo[idx] <= max_d: answer[-1] += 1 else: answer.append(1) elif baepo[idx] <= max_d: answer[-1] += 1 else: answer.append(1) max_d = baepo[idx] return answer
- 우선 배포에 필요한 작업 시간을 구하기 위해 divmod를 사용해 몫과 나머지를 구하고 나머지가 있는 경우 몫에 1을 더하여 baepo list에 저장함
- 작업 수가 1인 경우는 별도의 예외처리를 해줌
- 첫번째 작업의 배포 기간을 max 값으로 지정하고 반복문을 돌리며 max 값을 넘지 않는 경우 count를 더해줌. max 값을 넘는 경우 리스트에 새로운 count를 저장함