문제를 정리해보자.
1. 각 기능은 진도가 100%일 때, 서비스에 반영한다.
2. 각 기능의 개발 속도는 모두 다르다.
3. 뒤에 개발이 먼저 완료되어도, 앞에 기능이 배포될 때 함께 배포해야 한다.
배포 순서대로 작업 진도 적힌 배열 : progresses
각 작업의 개발 속도 적힌 배열 : speeds
문제는 '배포마다 몇 개의 기능이 배포되는지' 찾는 것이다.
def solution(progresses, speeds):
answer = []
while progresses:
progresses = list(map(lambda x1, x2: x1 + x2, progresses, speeds))
result = 0
while progresses:
if 100 <= progresses[0]:
progresses.pop(0)
speeds.pop(0)
result += 1
else:
break
if result:
answer.append(result)
return answer
print(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]))
1. 작업 진도 리스트 = 각 작업 진도 + 각 개발 속도
2. 작업 진도 리스트의 index 0번를 확인한다.
2-1. 진도가 100%라면, index 0번째를 pop하고 넘어간다. 3번으로 간다.
2-2 . 진도가 100%가 아니라면, 1번으로 간다.
3. 작업 진도 리스트에 남은 것이 있다면, 1번으로 간다. (없다면 종료.)
시간 복잡도는 O(N^2)이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] 다리를 지나는 트럭 (0) | 2021.11.24 |
---|---|
[프로그래머스][Python] 프린터 (0) | 2021.11.10 |
[프로그래머스][Python] 베스트앨범 (0) | 2021.11.03 |
[프로그래머스][Python] 위장 (0) | 2021.11.02 |
[프로그래머스][Python] 전화번호 목록 (0) | 2021.11.01 |