#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int day = 0, cal = -1, now = 0;
for(int i=0;i<progresses.size();i++) {
// 날짜 계산
cal = ceil((double)(100 - progresses[i]) / speeds[i]);
if(cal <= day) {
// 이미 처리된 작업 증가
now++;
} else {
if(day != 0) {
// 다음 작업을 위해 그전 작업 개수 증가
answer.push_back(now);
}
// 날짜 업데이트
day = cal;
now = 1;
}
}
answer.push_back(now);
return answer;
}
단순히 구현으로 해결한 문제이다. 먼저 작업량을 기준으로 계산 된 날짜를 저장했다. 그리고 그 날짜를 기준으로 적으면 동시에 배포 될 수 있으므로 개수를 증가시켜 주었다. 만약 날짜가 초기 값이 아니면 새로 처리된 것이므로 answer
에 저장해주었다. 마지막 작업은 따로 저장해야해서 for
문 밖에서 한번 더 저장을 해주었다. 가장 좋아요가 많은 풀이를 보니 ++answer.back()
을 사용했는데 나도 그것을 활용했으면 좀 더 깔끔하게 작성했을 것 같다.