ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기능개발
    프로그래머스(Programmers) 2021. 9. 5. 22:00
    반응형

    문제설명

     

     

     

    #include <string>
    #include <vector>
    
    using namespace std;
    
    vector<int> solution(vector<int> progresses, vector<int> speeds) {
        vector<int> answer;
        int last = progresses.size(); //3개 원소면 3리턴
        int end = last;
        int cnt =0; 
        int start =0;
        while(end > 0)
        {
        for(int i=0; i<last; i++)
            {
                if(progresses[i] <=100)
                {
                     progresses[i] += speeds[i];
                }   
                if( i == (last -1))
                {
                    for(int j=start; j< last; j++) //이전것까지 확인
                    {
                        if(progresses[j] >= 100) //다 되었으면
                        {
                            cnt++;
                        }
                        else
                        {
                            start = j; break;
                        }//다음것이 초과하지 못하였으면 해당것만 넣고 끝
                    }
                    if(cnt >0)
                    {
                    answer.push_back(cnt);
                    end -=cnt;
                    cnt=0;
                    }
                }
            }
        }
        return answer;
    }

     

     

    => progresses 배열에 speeds 배열의 수를 차례대로 더해 100이 넘는 배열을 찾습니다. 

     

    => progresses 배열에 100이 넘은 배열이 있을 경우, 앞에서부터 차례로 answer배열에 삽입합니다. 

     

    => progresse배열 뒷부분에 100이 넘은 원소가 있더라도 앞부분에서 100을 넘지 못하였을 경우에는 answer에 삽입하지 않습니다. 

     

    => 해당 과정을 answer 배열 원소 수와 progresses 배열 원소수와 같아질 때까지 반복합니다. 

     

     

    *스택과 힙을 이용해 풀수풀 수 있는 문제라고는 하나, 제한된 수의 크기가 크지 않아 사용하지 않고 풀 수 있는 문제였습니다. 

     

     

    반응형

    댓글

Designed by Who.