관리 메뉴

기억을 위한 기록들

[프로그래머스 lv 2 ] - 기능개발 본문

Coding Test - cpp/Stack, Queue

[프로그래머스 lv 2 ] - 기능개발

에드윈H 2021. 5. 6. 15:40

programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

#include <string>
#include <vector>
#include <math.h>
using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
	// progresses 작업의 진도 // 길이 100이하
	// speeds 각 작업의 속도 // 길이 100이하
	// 진도<100
	//속도 <=100

	vector<int> answer;
	vector<int> ProgreDay;

	//각 프로세스가 몇일 걸리는지
	for (int i = 0; i < progresses.size(); i++)
	{
		int remainJob = (100 - progresses[i]) % speeds[i]; //남은 작업량
		int day = (100 - progresses[i]) / speeds[i]; //작업기간
        
		if (remainJob != 0) //남은 작업이 나누어떨이지지 않으면 하루추가 해야함
		{
			day++;
		}
		ProgreDay.push_back(day);
	}


    //작업걸리는기간 비교하여 뒤에 작업보다 오래걸리면 종합하기
	int maxDay = ProgreDay[0];
	int cntDay = 1;
	for (int i = 1; i < ProgreDay.size(); i++)
	{
		if (maxDay >= ProgreDay[i])
		{
			cntDay++;			
		}
		else
		{
			answer.push_back(cntDay);
			cntDay = 1;
			maxDay = ProgreDay[i];
		}
	}

	answer.push_back(cntDay);
	return answer;
}