이전 프로젝트가 끝나지 않았다면 기다렸다가 같이 배포한다는 점이 이 문제에서 신경써주어야하는 부분이다.
때문에 deque에 순서대로 집어넣고 front프로젝트가 완료되지않은 프로젝트일때까지 빼주는 방식의 코드를 구현하였다.
#include <string>
#include <vector>
#include <deque>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds)
{
vector<int> answer;
deque<int> dq_progresses, dq_speeds;
for(auto c : progresses) dq_progresses.push_back(c);
for(auto c : speeds) dq_speeds.push_back(c);
while(!dq_progresses.empty())// 모든 프로젝트가 끝날때 까지
{
int cnt=0;
for(int i=0;i<dq_progresses.size();i++)
if(dq_progresses[i]<100) dq_progresses[i] += dq_speeds[i];// 프로젝트가 끝나지 않았다면
while (!dq_progresses.empty() && dq_progresses.front() >= 100)
{//dq.front()가 완료되었다면
dq_progresses.pop_front();// 둘다
dq_speeds.pop_front();// 빼준다.
cnt++;//배포하는 프로젝트 수
}
if (cnt) answer.push_back(cnt);
}
return answer;
}