January 29, 2020
배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses
와 각 작업의 개발 속도가 적힌 정수 배열 speeds
가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하세요.
progresses
, speeds
배열의 길이)는 100개 이하입니다.from collections import defaultdict
def solution(progresses, speeds):
scheduler = defaultdict(int)
next_deploy = 0
for p, s in zip(progresses, speeds):
q, r = divmod(100 - p, s)
when_deploy = q if r == 0 else q + 1
if next_deploy <= when_deploy:
next_deploy = when_deploy
scheduler[next_deploy] += 1
return list(scheduler.values())
zip
함수를 이용하여 코드를 좀 더 간결하게 작성하였습니다.
defaultdict
를 사용하여서 배포 날짜가 scheduler
에 등록돼있는 날짜인지 검증하는 로직을 제거하였습니다.
import unittest
from solution import solution
class TestCase(unittest.TestCase):
def test_solution(self):
self.assertEqual(solution([99, 40, 30], [1, 20, 55]), [1, 2])
if __name__ == '__main__':
unittest.main()