정리와기록 블로그
[기능개발] 본문
문제: https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 ��
programmers.co.kr
접근:
- 우선 얼마의 기간((100 - work) / speed)이 필요한지 기록한 배열을 만든다. (daysReq)
- 그런 다음, 해당 배열을 순회하면서 다음 인덱스의 days가 길 때만 카운트를 종료하고 이를 answer 배열에 넣어준다. (약간 규칙?같은 것인데 예제를 보다보면 answer를 어떻게 넣어줘야 할지 알 수 있다.)
- cnt만큼 인덱스를 앞서간다.
코드:
#include <string>
#include <vector>
using namespace std;
int getDaysReq(int work, int speed);
vector<int> solution(vector<int> progresses, vector<int> speeds)
{
vector<int> answer;
vector<int> daysReq;
for (int i = 0; i < progresses.size(); i++)
{
int workLeft = 100 - progresses[i];
daysReq.push_back(getDaysReq(workLeft, speeds[i]));
}
int i = 0;
while (i < daysReq.size())
{
int cnt = 1;
for (int j = i + 1; j < daysReq.size(); j++)
{
if (daysReq[j] > daysReq[i]) break;
cnt++;
}
answer.push_back(cnt);
i += cnt;
}
return answer;
}
int getDaysReq(int work, int speed)
{
return (work % speed) > 0 ? work / speed + 1 : work / speed;
}
Comments