C++:: 프로그래머스 <기능개발>

jahlee·2023년 3월 29일
0

프로그래머스_Lv.2

목록 보기
20/106
post-thumbnail

이전 프로젝트가 끝나지 않았다면 기다렸다가 같이 배포한다는 점이 이 문제에서 신경써주어야하는 부분이다.
때문에 deque에 순서대로 집어넣고 front프로젝트가 완료되지않은 프로젝트일때까지 빼주는 방식의 코드를 구현하였다.

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

vector<int> solution(vector<int> progresses, vector<int> speeds)
{
    vector<int> answer;
    deque<int> dq_progresses, dq_speeds;

    for(auto c : progresses) dq_progresses.push_back(c);
    for(auto c : speeds) dq_speeds.push_back(c);
    while(!dq_progresses.empty())// 모든 프로젝트가 끝날때 까지
    {
        int cnt=0;
        for(int i=0;i<dq_progresses.size();i++)
            if(dq_progresses[i]<100) dq_progresses[i] += dq_speeds[i];// 프로젝트가 끝나지 않았다면
        while (!dq_progresses.empty() && dq_progresses.front() >= 100)
        {//dq.front()가 완료되었다면
            dq_progresses.pop_front();// 둘다
            dq_speeds.pop_front();//	 빼준다.
            cnt++;//배포하는 프로젝트 수
        }
        if (cnt) answer.push_back(cnt);
    }
    return answer;
}

0개의 댓글