본문 바로가기
프로그래머스/Lv.2

기능 개발 - C++, Queue

by 아찌방 2025. 2. 22.

 

 

주소

 

코드 & 풀이

 

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;

    int day;
    int max_day = 0;
    for (int i = 0; i < progresses.size(); ++i)
    {
        // 각 작업이 완료되기까지 걸리는 일수 계산
        day = (99 - progresses[i]) / speeds[i] + 1;

        // 첫 번째 작업은 1개로 시작, 이후 같은 날에 완료된 작업을 합침
        if (max_day < day)
        {
            answer.push_back(1);  // 새로운 배포
            max_day = day;        // 가장 늦게 완료된 날 갱신
        }
        else
        {
            ++answer.back();  // 같은 날에 완료된 작업 수 증가
        }
    }

    return answer;
}

 

 

주석 그대로임

 

각 작업이 완료되는데 필요한 일수를 계산해서

 

이를 기반으로 답을 구해갑니다.

 

현재 최대 일수보다 크다는 것은

 

지금 완료 되지 않는 다는 것을 뜻하니까,

 

anwer에 새로 추가

 

현대 최대 일수보다 작거나 같다면

 

작업이 완료되고 대기하고 있었던 거니까

 

추가하는 게 아니고 기존의 것에 + 1을 해줍니다.

 

 

 

다음에 또 봐요

 

728x90