[プログラマ]機能の開発


[プログラマ]機能の開発


質問する



せいげんじょうけん



にゅうしゅつりょく



質問へのアクセス


キューを使用して実装される問題.
現在の進捗と速度を使用して、合計消費時間を計算し、キューに入れます.progress[i]/speed[i]がちょうど分かれている場合は、当日を直接キューに入れます.そうしないと、もう1を追加します.
キューのfifoコンセプトを使用して、まず入力し、まず値を最初の基準として出力し、後の値が自分より小さくなったら抽出を続け、自分より大きい値が現れたら抽出を停止し、ドアに戻って開始します.

コード実装(C++)

#include <string>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    int taskSize = progresses.size();
    queue<int> q;
    vector<int> answer;
    for(int i = 0 ; i < taskSize ; i++){
        int days = (100-progresses[i])/speeds[i];
        if((100-progresses[i])%speeds[i] != 0){
            days += 1;
        }
        q.push(days);
    }
    while(1){
        if(q.empty()) break;
        int cnt = 0;
        int firstNum = q.front();
        int tempNum;
        q.pop();
        cnt++;
        while(1){
            if(q.empty()) break;
            tempNum = q.front();
            if(tempNum > firstNum) break;
            q.pop();
            cnt++;
        }
        answer.push_back(cnt);
    }
    
    return answer;
}