상세 컨텐츠

본문 제목

99클럽 코테 스터디 6일차 TIL : 기능개발

코테준비/하루한개도전~

by 움바둠바 2024. 7. 29. 21:39

본문

728x90

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

 

프로그래머스

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

programmers.co.kr

이번에도 딱히 나쁘지는 않았던것같다!

근데 scpc round2때 봤던 스케줄링이 생각나서 좀 ptsd가,,,,,,ㅎ,,,


speed가 어떤단위인지 햇갈렸는데, 단순히 하루에 몇%를 진행할 수 있는지를 나타낸것이었다.

 

흠,, 그래서 어떻게 할까아아아 하다가

그냥 하루단위로 while을 돌려봤다!

 

일단 que에 기능을 순서대로 넣어준다 (나는 그냥 index로 처리할것이기 때문에 0, 1, 2, ... int로 넣어줬다)

그리고 que가 비어있을때까지 while을 돌린다.

while시작전에 며칠지났는지, que의 맨 앞에있는 기능구현이 끝난 날짜인지를 확인한다,

-> 여기서 true로 걸리면 ends한 작업 개수를 1 증가시키고, 해당 기능은 que에서 pop해버린다!

false로 넘어가면, 지금 날짜로는 맨 앞에있는 작업을 끝내지 못한거니까 날짜를 하루 증가한다

(이 때 지금까지 센 작업개수를 answer 벡터에 넣어주고 0으로 초기화해준다)

이걸 반복하면 된다.

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

using namespace std;

// 길이가 같은 두 벡터끼리 더해주는것 (같은 위치끼리)
vector<int> vec_add(vector<int> a, vector<int> b){
    vector<int> result;
    for(int i = 0; i<a.size(); i++){
        result.push_back(a[i] + b[i]);
    }
    return result;
}

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    
    queue<int> proc_que;
    
    for(int i = 0; i<progresses.size(); i++){
        proc_que.push(i);
    }
    
    int how_days = 0;
    int ends = 0;
    while(!proc_que.empty()){
        int i = proc_que.front();
        if((progresses[i] + (speeds[i] * how_days)) >= 100){
            ends++;
            proc_que.pop();
            continue;
        }
        if(ends != 0){
            answer.push_back(ends);
            ends = 0;
        }
        how_days++;
        
    }
    if(ends != 0){
        answer.push_back(ends);
    }
    
    
    
    return answer;
}

굿굿!

이번주도 화이팅이다! 

728x90

관련글 더보기