정리와기록 블로그

[기능개발] 본문

프로그래머스

[기능개발]

뫂림 2020. 9. 2. 22:27

문제: 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;
}

'프로그래머스' 카테고리의 다른 글

[가장 큰 수]  (0) 2020.09.05
[주식가격]  (0) 2020.09.05
[네트워크]  (0) 2020.09.02
[전화번호 목록]  (0) 2020.09.01
[타겟 넘버]  (0) 2020.09.01
Comments