#기능개발

  • 문제

프로그래밍 팀은 기능 확장에 대해 작업하고 있습니다. 각 기능은 진행률이 100%일 때 서비스에 반영될 수 있습니다.

또한, 각 특성의 발달 속도가 다르기 때문에 후형이 선행형보다 먼저 발달할 수 있으며, 이 경우 후형이 선행형과 함께 출시된다.

첫 번째로 배포되어야 하는 순서대로 작업 진행률이 포함된 정수 배열과 모든 작업에 대한 개발 속도와 함께 정수 배열 속도가 주어지면 각 배포에 배포된 기능 수를 반환하는 solve 함수를 완료합니다.

  • 암호
#include <iostream>
#include <vector>
#include <stack>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    int due; //작업기간
    stack<int> s;
    vector<int> answer;

    for (int i = (progresses.size()-1); i >= 0 ; i--) { // progresses size 만큼 반복

        // 연산 
        due = ((100 - progresses(i)) / speeds(i));

        if (((100 - progresses(i)) % speeds(i)) != 0) {
            // 나머지가 존재한다면
            due++;
        }

        s.push(due);
    }

    //한번에 배포되는 기능의 개수 연산
    while (!s.empty()) { //스택이 빌 때까지 반복
        int num = 0; //한번에 배포되는 기능의 개수
        int top = s.top();

        while (!s.empty() && s.top() <= top) {
            num++;
            s.pop();
        }
        answer.push_back(num);
    }

       
    return answer;
}
  • 논평

1. 솔루션(벡터 진행 벡터 속도)

– 각 배포에 대해 배포된 기능 수를 반환하는 함수입니다.

: 작업 주기 변수 선언 및 스택 및 출력 응답 벡터 배열

: for 문에 의해 진행 크기만큼 각 작업에 대한 기간 계산을 반복합니다.

: 기한 계산

: (100 – 진행률(i))을 속도(i)로 나눈 나머지가 있으면 하루가 더 소요되므로 작업시간이 1 증가합니다.

: 작업 기간을 스택에 삽입합니다.

: 각 작업에 대한 요금을 모두 계산한 후 스택이 비워질 때까지 동시에 배포된 함수의 수를 세는 과정을 반복합니다.

: 동시에 배포할 기능의 개수를 num으로 설정하고 0으로 초기화

: 스택의 상단을 기준점으로 설정하고, 스택이 비어 있지 않고 스택의 상단이 기준점보다 작거나 같으면 num을 증가시켜 due를 제거하고 while문으로 반복

: 그리고 num이 계산되면 응답 벡터 배열에 추가됩니다.

: 마지막으로 응답 벡터 배열을 반환합니다.