본문 바로가기

코딩테스트/프로그래머스

[프로그래머스] 기능개발

프로그래머스 기능개발 C++ 풀이

 

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

 

 

// 일단 100에서 progresses[i]를 빼고 이 값을 speeds[i]로 나누자
// 딱 떨어지면 그냥 안떨어지면 + 1 하고 q에 넣는다.
// 그리고 while문을 2번 돌린다.
// 처음 while문에서 num = q.front하고 cnt = 1하고 그 안의 while문에서 q.front를 또해 이 값이 num보다 작아야 한다. 그래야 기다리는 거니까
// 그리고 안의 while문 빠져 나오면 answer에 push back 해준다.
#include <string>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    queue <int> q;
    
    for (int i = 0; i < progresses.size(); i++){
        int temp = 100 - progresses[i];
        if (temp / speeds[i] != 0)
            q.push(temp / speeds[i] + 1);
        else
            q.push(temp / speeds[i]);
    }
    
    while(!q.empty()){
        int num = q.front();
        q.pop();
        int cnt = 1;
        while(!q.empty() && q.front() <= num){
            q.pop();
            cnt++;
        }
        answer.push_back(cnt);
    }
    
    return answer;
}