상세 컨텐츠

본문 제목

[Level2.] 기능개발 C++

C++/Programmers

by J2on 2023. 7. 11. 21:46

본문

문제

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

 

프로그래머스

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

programmers.co.kr

 

구현

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    
    // 각 작업이 필요로하는 일수를 dueDateList에 저장
    int dueDateList[progresses.size()];
    bool isDone;
    for(int i=0; i< progresses.size(); i++){
        dueDateList[i] = 0;
        isDone = false;
        while(!isDone){
            dueDateList[i]++;
            if(progresses[i] + speeds[i]*dueDateList[i] >= 100){
                isDone = true;
            }
        }
    }
    
    
    int targetNum = 0; // 배포를 하는 당시에 progresses의 시작지점
    int commitNum = 1; // 연속 몇개를 배포하는지
    for(int i=1; i<progresses.size(); i++){
        if(dueDateList[i] <= dueDateList[targetNum]){ // 필요한 날짜를 비교하여 작으면 같이 배포가 가능한 경우
            commitNum++;
        }
        else{
            answer.push_back(commitNum);
            targetNum = i;
            commitNum = 1;
        }
    }
    answer.push_back(commitNum);
    
    
    return answer;
}

 

각 작업이 필요로 하는 일수를 저장하는 dueDateList를 새로 만들어 초기화.

 

targetNum은 배포를 진행하는 index를 저장하는 변수인데,

dueDateList에서 요소를 비교해서 뒤에 나오는 수가 작다는 것은, targetNum의 배포시점에 이미 완성이 되어있다는 것.

 

그래서 함께 배포할 수 있도록 지정해준다.

 

https://github.com/J2on/Programmers_Study/blob/main/Level2./%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C.cpp

 

'C++ > Programmers' 카테고리의 다른 글

[Level2.] 구명보트 C++  (0) 2024.02.04
[Level1.] 개인정보 수집 유효기간 C++  (0) 2024.02.03
[Level2.] 주식가격 C++  (0) 2023.07.12
[Level2.] 올바른 괄호 C++  (0) 2023.07.11
[Level1.] 같은 숫자는 싫어 C++  (0) 2023.07.11

관련글 더보기

댓글 영역