본문 바로가기
IT/알고리즘

57] 프로그래머스 기능개발

by 깻잎쌈 2020. 11. 16.
반응형

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

 

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

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

programmers.co.kr

 

1. 각 프로세스마다 배포까지 걸리는 날짜를 time 벡터에 저장하고

2. time 벡터를 for문 돌리면서

   벡터 시작값보다 큰 값이 나오면 그전 프로세스까지는 배포하고,

   시작값 다시 설정하고

3. 마지막 부분에서는 큰값이 안 나오고 for문이 종료될 수 있으므로 값 비교해서 부족한 만큼 answer에 추가.  

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

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    vector<int>time;
    // 각 process별 배포까지 필요한 날짜 저장 
    for(int i = 0;i<speeds.size();i++){
        if( (100- progresses[i]) % speeds[i] ==0)
            time.push_back((100- progresses[i])/speeds[i] );
        else
            time.push_back((100- progresses[i])/speeds[i] +1);
    }
    
    // 배포할때마다 answer에 삽입
    int start = 0;
    int sum =0;
     for(int i = start; i < time.size();i++){                
               if(time[i]  >  time[start]){
                    answer.push_back(i- start);
                   sum += (i-start);
                    start = i;     
           }
       }
    
    // 마지막 부분 
     if(sum != time.size())
          answer.push_back(time.size()- sum);
    
    return answer;
}

 

 

반응형

댓글