문제를 조금 요약하자면 각 기능은 진도가 100%일 때 서비스에 반영할 수 있고, 각 기능의 개발 속도는 모두 다르므로 뒤의 기능이 앞의 기능보다 먼저 개발될 수 있다. 하지만! 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다는점이다.
문제 분류는 스택/큐로 분류되어있지만, 반복문으로도 간단히 풀 수 있을거 같아서 반복문을 사용하여 풀었는데, 저의 문제 풀이는 이렇습니다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int pivot = 0; // 배열 방문 pivot
for (int i = 1; i <= 100; i++) // i = day로, 작업 최대기간이 100일이니 최악의 경우 100번 반복.
{
int num = 0; // 당일 기능 개발완료된 기능이 몇개인지 세는 코드
// 완료된 기능이 몇개인지 체크하는 반복문 / progresses.size() > pivot 조건은 세그먼트 폴드 방지하기 위함
while(progresses[pivot] + (i * speeds[pivot]) >= 100 && progresses.size() > pivot)
{
pivot++;
num++;
}
if (num) // 당일 완료된 기능이 있다면 answer에 완료된 기능 갯수 push
{
answer.push_back(num);
}
if(progresses.size() == pivot) // 기능 개발이 완료됐다면 반복문 탈출
break;
}
return answer;
}