문제 설명
프로그래밍 팀은 기능 확장에 대해 작업하고 있습니다.
각 기능은 진행률이 100%일 때 서비스에 반영될 수 있습니다.
또한 각 형질의 발달 속도가 다르기 때문에 후형이 선행형보다 먼저 발달할 수 있으며, 이 경우 후형이 선행형과 함께 출시된다.
첫 번째로 배포되어야 하는 순서대로 작업 진행률이 포함된 정수 배열과 모든 작업에 대한 개발 속도가 포함된 정수 배열 속도를 가정하여 각 배포에 배포된 기능 수를 반환하는 solve 함수를 완료합니다.
제한
- 작업 수(진행, 속도 배열 길이)는 100보다 작거나 같습니다.
- 작업 진행률은 100보다 작은 자연수입니다.
- 작업률은 100보다 작거나 같은 자연수입니다.
- 배포는 하루에 한 번만 발생할 수 있으며 하루가 끝날 때 발생할 것으로 예상됩니다.
예를 들어 진행률이 95%인 작업의 일일 개발률이 4%인 경우 2일 후에 배포됩니다.
I/O 예시
I/O 예시 설명
I/O 예제 #1
첫 번째 기능은 93% 완료되고 하루에 1% 작업이므로 7일 작업 후 배포합니다.
두 번째 기능은 30% 완료되었으며 하루에 30%씩 편집할 수 있으므로 영업일 기준 3일 이내에 배포할 수 있습니다.
다만, 앞선 1편이 아직 완성되지 않았기 때문에 1편 공개 후 7일 차에 공개될 예정이다.
세 번째 기능은 55% 완료되었으며 하루 5%로 작업할 수 있으므로 9일(영업일 기준) 내에 배포할 수 있습니다.
따라서 7일에는 2개의 기능이 배포되고 9일에는 1개의 기능이 배포됩니다.
I/O 예제 #2
모든 기능은 하루에 1%로 작동할 수 있으므로 작업 완료까지 남은 일수는 각각 5일, 10일, 1일, 1일, 20일, 1일입니다.
어떤 기능이 먼저 완료되더라도 선행 기능이 모두 완료되기 전에는 배포가 불가능합니다.
따라서 5일에는 기능 1개, 10일에는 기능 3개, 20일에는 기능 2개가 배포됩니다.
※ 참고 – 2020년 7월 14일 테스트 케이스가 추가되었습니다.
암호
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int day;
int max_day = 0;
for(int i=0;i<progresses.size();i++){
day = (99 - progresses(i)) / speeds(i) + 1;
if(answer.empty() || max_day < day){
answer.push_back(1);
max_day = day;
}
else answer.back()++;
}
return answer;
}
1. 100에서 99를 빼고 1을 더하여 for 문을 1로 줄입니다.
벡터에 값을 더할 때 answer.push_back(value to put)
기존 값에 1을 더하는 answer.back()++