완성되었어도 앞 순서의 기능이 완성되지 않았으면 배포 불가능
→ FIFO → queue → progresses를 큐로 사용하자
기능에 작업 속도를 loop 돌면서 계속 + 해줌 가장 앞 원소가 100% 넘으면 배포 가능
→ progresses 앞에서부터 100% 아닐 때까지 pop
→ speeds도 까먹지 말구 잘라주자!
이 때, pop된 갯수만큼 한 번에 배포된 기능이니까 정답 리스트에 추가 → cnt변수 만들기
📖풀이
📎queue #1
def solution(progresses, speeds): answer = [] while progresses: progresses = [p+s for p, s in zip(progresses, speeds)] cnt = 0 while len(progresses) !=0 and progresses[0] >= 100: cnt += 1 progresses.pop(0) speeds.pop(0) if cnt != 0: answer.append(cnt) return answer
📎queue #2
def solution(progresses, speeds): answer = [] day = 1 cnt = 0 while progresses: if (progresses[0] + speeds[0]*day) >= 100: progresses = progresses[1:] speeds = speeds[1:] cnt+=1 else: # 가장 앞이 진도율 100%가 아닌데 cnt가 0이 아니라구라구라?? # 전 날 cnt개의 기능 배포 되었단거네 if cnt != 0: answer.append(cnt) cnt = 0 # 첫번째 기능이 진도 100%이 아니면서 전 날 배포된 기능도 없다구?? 하루 더 일해라 day += 1 answer.append(cnt) return answer
실제 배포가 며칠 날 일어났는지도 알 수 있음
굳이 progresses의 값을 직접 바꾸는 것이 아니라 날짜만큼의 진행도를 매번 더해서 100% 넘는지 확인
넘을 때마다 cnt++해주고 그 프로세스 제거 if
100% 안 넘으면 else → 이 안에서 이미 완성된 친구들 count가 있으면 answer에 추가