プログラマ:開発機能(スタック/キュー)かいはつきのう(スタック/キュー)


機能開発(スタック/キュー)


質問する



に答える


プログラマは問題をスタック/キューの問題に分けます.
この問題は、スタック/キューを使用することなく解決できます.
条件さえ満たせば解決しやすい問題です.
条件1:進捗が100%の場合に配置できます.
条件2:後の機能進捗が100%であっても、前の機能
             進捗が100%でない場合は、導入できません.
条件3:導入時に導入された機能の数を回答します.

C++コード

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    int size = progresses.size();
    
    // 작업 완료 수
    int count = 0;
    
    // 작업이 모두 완료되면 종료
    while(count < size) {
        
        // 배포 기능 수 초기화
        int n = 0;
        
        // 작업 진도 나가기
        for(int i = count; i < size; i++) {
            progresses[i] += speeds[i];
         }
        
        // 조건에 맞게 완료된 작업이 있으면 배포 준비
        while(count < size && progresses[count] >= 100) {
            n++;
            count++;
        }
        
        // 배포 가능한 기능이 있으면 배포
        if(n != 0) {
            answer.push_back(n);
            continue;
         }
    } 
    return answer;
}

Pythonコード

def solution(progresses, speeds):
    answer = []
    size = len(progresses)
    
    # 작업 완료수
    count = 0
    
    # 작업이 모두 완료되면 종료
    while count < size:
        # 배포 기능 수 초기화
        n = 0;
        
        # 작업 진도 나가기
        for i in range(size):
            progresses[i] += speeds[i]
        
        # 조건에 맞게 완료된 작업이 있으면 배포 준비
        while count < size and progresses[count] >= 100:
            n += 1
            count += 1
        
        # 배포 가능한 기능이 있으면 배포
        if n != 0:
            answer.append(n)
    return answer