프로그래머스

기능개발 - 프로그래머스, c++

2023. 1. 18. 00:12

 

 

- 문제 풀이

"큐"를 사용하는 문제였다.

배포할 정도가 아니면 front값을 뒤로 넘기고 배포할 때가 됐으면 큐에서 그 숫자를 빼내준다.

 

 

- 코드

하지만 내 풀이는 "큐"를 사용하진 않았다.

그냥 while, for 반복문을 사용해 값을 계산하고, push_back() 을 통해 계산한 값을 저장했다.

(vector, while, for 만으로도 충분히 풀 수 있을 거라고 생각했다..)

(사실 위에 #include <stack>은 필요없을 듯 싶다.)

다음엔 큐를 사용한 풀이로도 시도해봐야겠다.

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

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    
    int num = 0;
    int count = 0;
    
    while(num < progresses.size()) {
        count = 0;
        for(int i=0; i<progresses.size(); i++) {
            progresses[i] += speeds[i];
        }
        for(int i=num; i<progresses.size(); i++) {
            if(progresses[i] >= 100) {
                count++;
            }
            else {
                break;
            }
            
            if(progresses[i+1] < 100) {
                break;
            }
        }    
        num += count;
        if(count>0)
            answer.push_back(count);
    }
    
    return answer;
}