PS

프로그래머스 - 기능 개발

728x90

programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

큐를 사용해서 처리해야하는 문제다.

각 작업별 100% 도달할때 까지 경과되는 시간들을 전부 큐에 넣는다.

그리고 큐가 비어있게 될때 까지

수를 하나씩 빼면서 큐의 프론트 부분 이상의 값인 경우, 동시에 끝낼 수 있는 작업이므로 

작업 처리 량을 나타내는 cnt 변수를 하나씩 늘리고

더이상 큐의 프론트 부분 보다 크거나 같은 값이 아니면 반복문을 종료하여, answer 에 cnt 를 추가해준다.

 

 

- c++

 

#include <iostream>
#include <vector>
#include <queue>
 
using namespace std;
 
vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    queue<int> q;
    int size = progresses.size();
    
    for (int i = 0; i < size++i) {
        int temp = progresses[i], cnt = 0;
        while(1) {
            cnt++;
            temp += speeds[i];
            if (temp >= 100break;
        }
        q.push(cnt);
    }
    
    while(!q.empty()) {
        int num = q.front(), cnt = 1;
        q.pop();
        
        while(1) {
            if (num >= q.front() && !q.empty()) {
                cnt++;
                q.pop();
            } else if (num < q.front() || q.empty()) 
                break;
        }
        
        answer.push_back(cnt);
    }
    
    return answer;
}
cs

 

 

728x90