공부 기록

[프로그래머스] 기능개발 C++

by 너나나

https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

각 작업은 병렬적으로 실행 가능하지만, 앞의 기능이 배포가 되어야만 뒤에꺼도 배포할 수 있음.

어떤 작업이 배포할 때까지 걸리는 시간이 앞 작업의 배포 시간보다 작다면 나중에 앞 작업이 배포될때 같이 배포될 수 있음!

#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    vector<int> period; // 빠져나갈때까지 걸리는 시간 넣자

    for(int i = 0; i < progresses.size(); i++) {
        period.push_back(ceil((float)(100 - progresses[i])/speeds[i]));
    }
    int count = 1;
    int base = period[0];
    for(int i = 0; i < progresses.size() - 1; i++) {
        if(base >= period[i + 1]) {
            count++;
            continue;
        }
        else {
            answer.push_back(count);
            base = period[i + 1];
            count = 1;
        }
    }
    answer.push_back(count);
    return answer;
}

개떡같이 푼거같다!!!!!

항상 기준은 배포가 안된 제일 첫번째껄로 해주기 위해서 배포가 되면 base를 period[i+1]로 바꾸면서 기준을 바꿨다!!

블로그의 정보

공부 기록

너나나

활동하기