progresses 벡터의 원소별로 100에서 빼면 얼마가 남는지,
그걸 speeds로 나누면 어떻게 되는지 계산한다.
-> 나누어 떨어지면 몫을 push, 나눠떨어지지 않는 경우 +1을 해준다.
ex) [93, 30, 55] 인 경우 100에서 빼면 [7, 70, 45]이 되고, 각각의 speeds([1, 30, 5])로 나누게 되면 70인 경우 나눠떨어지지 않음.
하루에 30씩 진전되니까 하루를 더 해야 일을 마무리 할 수 있으므로 1을 더해준다.
1번을 통해([93, 30, 55]) 계산해주면 [7,3,9]가 된다.
-같거나 작으면 갯수를 증가시켜줌
-큰 경우 세고 있던 걸 answer에 넣어주고 새롭게 초기화한다
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
queue<int> success;
for(int i=0;i<progresses.size();i++){
int cnt=100-progresses[i];
if(cnt%speeds[i]==0) success.push(cnt/speeds[i]);
else success.push(cnt/speeds[i]+1);
}
int front = success.front();
int cnt=0;
while(!success.empty()){
if(front>=success.front()){
cnt++;
success.pop();
}else{
front=success.front();
answer.push_back(cnt);
cnt=1;
success.pop();
}
}
answer.push_back(cnt);
return answer;
}