프로그래머스 42586 - 기능개발
생각과 접근
- 먼저 각 작업의 끝나는데 걸리는 날 (
vector<int> endDay(progresses_size, 0)
) 을 구한 다음, 그 값을 토대로 answer를 찾으려 했습니다. endDay
를 순회하면서endDay
의 최댓값을 기록하는 변수temp
와 answer에 push_back할 변수cnt
를 선언했습니다.temp
가 갱신되는 순간, answer에cnt
를 push_back합니다. 최댓값으로 기록된 변수temp
가 변경되는 시점은 그간 앞의 작업이 끝나길 기다리는 작업들이temp
일 만큼 걸리는 작업이 끝났으므로 배포가 가능하게 되는 시점입니다.
코드
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
int progresses_size = progresses.size();
vector<int> answer;
vector<int> endDay(progresses_size, 0);
// 각 작업의 끝나는데 걸리는 날을 구하기
int day = 0, endJob = 0;
while(endJob < progresses_size){
day++;
for(int i = 0; i < progresses_size; i++){
if(progresses[i] >= 100) continue;
progresses[i] += speeds[i];
if(progresses[i] >= 100){
endDay[i] = day;
endJob++;
}
}
}
int temp = endDay[0], cnt = 1;
for(int i = 1; i < progresses_size; i++){
if(temp < endDay[i]){
temp = endDay[i];
answer.push_back(cnt);
cnt = 0;
}
cnt++;
}
answer.push_back(cnt);
return answer;
}
채점 결과
'Coding Test > programmers' 카테고리의 다른 글
프로그래머스 42587 - 프린터 (c++) (0) | 2020.07.28 |
---|---|
프로그래머스 42583 - 다리를 지나는 트럭 (c++) (0) | 2020.07.28 |
프로그래머스 42584 - 주식가격 (c++) (0) | 2020.07.28 |
프로그래머스 42585 - 쇠막대기 (c++) (0) | 2020.07.27 |
프로그래머스 42588 - 탑 (c++) (0) | 2020.07.27 |