Algorithm/백준과 프로그래머스

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

young_3060 2024. 2. 2. 16:18
728x90

오랜만에 문제 풀기~

 

처음에는 큐를 이용해서 문제를 풀까 생각했는데,

더 간단하게 풀릴것같아서 단순 구현으로 풀었다.

 

어차피 days는 계속 누적되고, cnt만 배포될때마다 확인 후 reset시켜주면 되는거라

while문으로 progress + speed * days가 100 넘을때까지 days를 누적시켜주고,

이후 배포되는 친구들을 위해 cnt가 0이 아닐 때, answer에다가 push해준다.

 

마지막 값이 누락되는 것을 방지하고자,

루프를 다 돌고 나왔을 때 cnt가 0이 아니면 answer에 push 해준다.

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    
    int cnt = 0;
    int days = 0;
    for(int i=0; i<progresses.size(); i++) {
        while(progresses[i] + speeds[i]*days < 100) {
            if(cnt != 0) {
                answer.push_back(cnt);
                cnt = 0;
            }
            days++;
        }
        cnt++;
    }
    if(cnt!=0) answer.push_back(cnt);
    
    return answer;
}
728x90