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

 

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

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

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <string>
#include <vector>
 
using namespace std;
 
vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    int cnt = 0;            //배포할 프로그램의 수
    int finishedCnt = 0;    //배포 완료된 프로그램 총 개수
    int releasedIdx = 0;    //먼저 배포되어야 할 프로그램의 현재 인덱스.
    while (true)
    {
        //배포되어야 할 프로그램의 인덱스부터 검색한다.
        for (int i = releasedIdx; i < progresses.size(); i++)
        {
            //프로그램의 진행도를 증가시킨다.
            progresses[i] += speeds[i];
            //배포되어야 할 프로그램의 진행도가 100이 넘었을 경우.
            if (progresses[releasedIdx] >= 100)
            {
                cnt++;                //프로그램 배포.
                finishedCnt++;        //배포 완료된 프로그램 총 개수 ++
                releasedIdx++;        //다음 포문을 돌 때, 현재 배포한 프로그램 인덱스 + 1 부터 검사.
            }
        }
        if (cnt != 0)    //배포된 프로그램이 있을 경우
        {
            answer.push_back(cnt);    //answer벡터에 프로그램 개수 푸쉬백
            cnt = 0;                //프로그램 개수 초기화
        }
        if (finishedCnt == progresses.size())break;    //모든 프로그램이 배포될 경우 while문 종료.
    }
    return answer;
}
cs

+ Recent posts