본문 바로가기
C++ 코딩 문제 풀이/프로그래머스

[Programmers] 기능개발

by 섬댕이 2024. 1. 5.

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

문제 해결 과정

착안

먼저 배포되어야 하는 프로세스 순으로 남은 작업 날짜를 계산하여 마지막으로 배포한 프로세스들 중 가장 작업 날짜가 긴 것보다 작으면 해당 프로세스와 함께 배포, 그렇지 않다면 함께 배포할 수 없다.

 

구현

프로세스별로 필요한 작업 날짜를 계산할 때, 남은 작업량을 작업 속도로 나눈 뒤 올림 계산을 하는 점과 가장 마지막에 배포한 프로세스들 중 작업 날짜가 가장 긴 것을 저장하여 비교하는 것에 유의하여 문제를 해결하였다.

 

[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~

더보기
#include <vector>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds)
{
    vector<int> answer;
    int day = 0;
    for (int i = 0; i < progresses.size(); i++)
    {
        int remain = (99 - progresses[i]) / speeds[i] + 1;
        if (day < remain)
        {
            day = remain;
            answer.push_back(1);
        }
        else
            answer.back()++;
    }
    
    return answer;
}

 

실행 결과

댓글