대단한 동현 블로그

https://school.programmers.co.kr/learn/courses/30/parts/12081

 

프로그래머스

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

programmers.co.kr

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

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 d_day;
        if ((100 - progresses[i]) % speeds[i]) // 나누어 떨어지지 않으면
            d_day = (100 - progresses[i]) / speeds[i] + 1;
        else
            d_day = (100 - progresses[i]) / speeds[i];
        q.push(d_day); // 완성되는데 필요한 날짜 큐에 넣어줌
    }
    for (int day = 0; q.size() > 0; day++)
    {    
        int num_func = 0;
        while (q.size() > 0 && q.front() <= day)
        {
            num_func++;
            q.pop();
        }
        if (num_func)
            answer.push_back(num_func);
    }
    return answer;
}

아래 q.pop하는 부분에서 q 비었는지 확인 안 해줘서 세그 떴었다 조건에 넣어주자~~

이거 좀 이쁘게 잘 푼 듯 ㅎ

profile

대단한 동현 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!