티스토리 뷰

반응형

기능이 배포되는 날에 한 번에 몇 개의 기능이 함께 배포되는지 구하는 문제

 


문제의 조건

 

1. 작업의 개수를 담은 배열 progresses, progresses 원소 각각의 작업 속도를 담은 배열 speeds가 주어짐

 

2. 각 작업은 뒤에 있는 것이 먼저 개발될 수도 있다. 

하지만 먼저 개발중인 작업이 완료될 때까지 기다렸다가 함께 배포된다.

 

3. 한 번에 몇 개씩 기능이 배포되는지 배열에 담아서 리턴하기 

 

4. 이 문제의 주의사항은 

progresses [99, 99, 99]

speeds [1, 1, 1] 일 때 답이 3이 나오면 된다. 

(처음에 저거에 대한 예외처리 안 해줘서 1,2,4,5 통과가 안 됐었음 ㅠ.ㅠ)


#include <string>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    queue<int> workingDays;
    //작업별 남은 일수 구하기
    for (int i = 0; progresses.size() > i; i++)
    {
        int remained = 100 - progresses[i];
        int days = 0;
        while (0 < remained)
        {
            remained -= speeds[i];
            days++;
        }

        workingDays.push(days);
    }

    vector<int> answer;
    while (!workingDays.empty())
    {
        int totalWorks = 0;
        //첫번째 작업 pop & 배포갯수 1개 증가
        int first = workingDays.front();
        workingDays.pop();
        totalWorks++;
        if (!workingDays.empty())
        {
            //두번째 작업 남은 일수 첫번째와 비교
            int second = workingDays.front();
            while (!workingDays.empty() && first >= second)
            {
                totalWorks++;
                workingDays.pop();
                second = workingDays.front();
            }
        }
        answer.push_back(totalWorks);
    }

    return answer;
}

 

어쨌든 평소보다 빨리 풀어서 좋다~

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함