Min:D's Devlog

[프로그래머스][스택/큐][C++] 기능개발 본문

알고리즘/프로그래머스

[프로그래머스][스택/큐][C++] 기능개발

Min:D 2020. 12. 7. 19:00

문제

프로그래머스 스택/큐 - 기능개발 (Level 2)

 

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

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

programmers.co.kr

 


문제  풀이

접근 방식

기능 개발 시, 뒤에 있는 기능이 더 먼저 개발되면 앞에 있는 기능이 배포될 때 함께 배포될 때,

각 배포마다 몇 개의 기능이 배포되는 지를 구하는 문제이다.

 

우선, 각 기능들마다 작업 진도 및 개발 속도가 다르기 때문에

이를 고려하여 개발을 완료하기까지 걸리는 일수를 구해 days 벡터에 저장해주었다.

 

그 후, 첫 번째 기능의 남은 일수를 max로 설정한 후,

max보다 남은 일수가 적은 기능인 경우에는 count에 1을 더하고,

그렇지 않은 경우, max 값을 현재 기능의 남은 일수로 변경하고

answer에 count 값을 저장하는 방식으로

 답을 구해주었다.

 


풀이 코드 - C++

#include <vector>
using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    int n = progresses.size();
    vector<int> days(n);
    for(int i = 0; i < n; i++) {
        days[i] = (100 - progresses[i]) / speeds[i];
        if((100 - progresses[i]) % speeds[i] != 0)
            days[i]++;
    }
    
    vector<int> answer;
    int count = 1;
    int max = days[0];
    for(int i = 1; i < n; i++) {
        if(max >= days[i])
            count++;
        else{
            max = days[i];
            answer.push_back(count);
            count = 1;
        }
    }
    answer.push_back(count);
    
    return answer;
}

실행 결과

실행 결과 : 통과 (100.0)

Comments