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

 

코딩테스트 연습 - 기능개발 | 프로그래머스

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇

programmers.co.kr

정답 : 

#include <string>
#include <vector>

using namespace std;
vector<int>stack;
vector<int>stackCount;
int Sum(int progresses,int speeds,int cnt){
    progresses=progresses+speeds;
    if(progresses<100){
        cnt++;
       
        return Sum(progresses,speeds,cnt);
    }else{
        return cnt;
    }
    
}


vector<int>  Count(vector<int> progresses,vector<int> speeds,int i){
      //progresses[i]=progresses[i]+speeds[i];
     
    for(int i=0;i<progresses.size();i++){
        int cnt=1;
        stack.push_back(Sum(progresses[i],speeds[i],cnt));
        }
     return stack;
}




vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    vector<int> answer1;
     vector<int> answer2;
    int ccn=1;
     answer1 =Count(progresses,speeds,0);
   
    int tmp=answer1[0];
    int tmpccn=0;
    for(int i=1;i<answer1.size();i++){
         tmpccn++;
        if(tmp >=answer1[i]){
            ccn++; 
            
        }else if(tmp<answer1[i]){
            answer.push_back(ccn);
            ccn=1;
            tmp=answer1[i];
        }
        if(answer1.size()-1==tmpccn){
                answer.push_back(ccn);
        }
    }
      
      
            
        
   // answer=answer1;
    
    
    return answer;
}

200806

#include <string>
#include <vector>
#include <algorithm>
#include<iostream>
using namespace std;
struct Saves{
    int progress;
    int num;
    int days;

};

bool cmp(const Saves &p1, const Saves &p2){
    if(p1.num < p2.num){
        return true;
    }
    else if(p1.num== p2.num){
        return p1.num < p2.num;
    }
    else{
        return false;
    }
}



vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    vector<int> task;
    vector<int> list;
    vector<Saves >data;
    static bool bCheck=false;
    for(int i=0;i<progresses.size();i++){
        Saves tmp;
        tmp.progress=progresses[i];
        tmp.num=i;
        tmp.days=0;
        
        data.push_back(tmp);
    }
    int count=data.size()-1;
    
    while(1){
    bCheck=true;
    for(int i=0;i< data.size();i++){
        if(data[i].progress<100){
        data[i].progress+= speeds[i];
        data[i].days+=1;
        bCheck=false;
        }
    }
    if(bCheck==true){
        break;
        }
        
    }
    
     sort(data.begin(),data.end(),cmp);
    
    int countNum=1;
    int dateMax=data[0].days;
    
    for(int i=1;i<data.size();i++){
       if(dateMax<data[i].days){
           answer.push_back(countNum);
           countNum=1;
           dateMax=data[i].days;
       }else if(dateMax>data[i].days){
            countNum++;
       }else if(dateMax==data[i].days){
           countNum++;
       
       }
        
    }
    
      answer.push_back(countNum);
    
    
    
    return answer;
}

뭔가 지난번이 더 간단하게 푼것같다

 

훨씬 더 간단하게 푼듯 

음 틀렸던점은 speed도 같이 pop 해줘야하는데 

작업만 pop을 해줌 

201003

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

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
while(progresses.size()>0){
    
    for(int i=0;i<progresses.size();i++){ //작업 진행 
        progresses[i]+=speeds[i];
       // cout<<progresses[i]<<",";
    }
  // cout<<endl;
     int data=0;
    for(int i=0;i<progresses.size();i++){ //나머지 한번씩 검사 
          
            if(progresses[i]>=100){ //무조건 맨처음 데이터만 검사 만약 첫번째가 100안넘엇으면 다른것들도 마찬가지 
                data++;
                
             }
            else if(progresses[i]<100){
                i=progresses.size()+1;
            }
        }
    
    
    for(int i=0;i<data;i++){
        progresses.erase(progresses.begin());
        speeds.erase(speeds.begin());
    }
    
     //cout<<endl;
        if(data>0){
        answer.push_back(data);
            data=0;
         }
     }
    
    
    
    
    return answer;
}

 

+ Recent posts