먼저 배포되어야 하는 순서대로 개발 진척도(progresses)와 개발 속도(speeds)가 주어질 때, 각 배포마다 몇 개의 기능이 배포되는지를 반환하는 함수 작성
def solution(progresses, speeds):
answer = []
while len(progresses) > 0:
count = 0
idx = 0
for progress, speed in zip(progresses, speeds):
progresses[idx] += speed
idx += 1
for i in range(len(progresses)):
if progresses[0] >= 100:
count += 1
progresses.pop(0)
speeds.pop(0)
if count > 0:
answer.append(count)
return answer
progresses
개체 내 요소는 제거할 계획이므로 while
Loop의 조건은 개체 내 요소가 존재하지 않을 때 까지 반복하도록 설정answer
리스트 안에 넣을 값인 count
설정for
Loop으로 하루가 지났을 때의 progresses
값을 얻기 위해 인덱스를 부여하여 각 인덱스 별 요소에 해당 speed
값을 더함.enumerate(zip(progresses, speeds))
를 써도 되지만, 언패킹할 때 정수와 튜플로 받아오게되어 한번 더 언패킹을 해야하는 단점이 있으므로 직관성을 위해 별도의 인덱스로 작업하였음.for
Loop으로 progresses
배열의 첫 개체가 100 이상인지 확인하여 이에 해당할 경우 count
값을 1 증가시키고, 처리가 끝난 값이므로 progresses
와 speeds
배열에서 pop(0)
하여 이후 작업에서 열외되도록 설정count
값이 1 이상일 경우 answer
리스트에 count
값을 추가하고 다시 while
Loop 시작P.S. 로직은 5분 만에 짰는데 speeds.pop(0)
를 빼먹어서 디버깅만 25분 했던게 함정..