[C++/프로그래머스] 기능개발
📝문제 포인트
-
progresses 벡터의 원소별로 100에서 빼면 얼마가 남는지,
그걸 speeds로 나누면 어떻게 되는지 계산한다.
-> 나누어 떨어지면 몫을 push, 나눠떨어지지 않는 경우 +1을 해준다.
ex) [93, 30, 55] 인 경우 100에서 빼면 [7, 70, 45]이 되고, 각각의 speeds([1, 30, 5])로 나누게 되면 70인 경우 나눠떨어지지 않음.
하루에 30씩 진전되니까 하루를 더 해야 일을 마무리 할 수 있으므로 1을 더해준다. -
1번을 통해([93, 30, 55]) 계산해주면 [7,3,9]가 된다.
-같거나 작으면 갯수를 증가시켜줌
-큰 경우 세고 있던 걸 answer에 넣어주고 새롭게 초기화한다
✍코드
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
queue<int> success;
for(int i=0;i<progresses.size();i++){
int cnt=100-progresses[i];
if(cnt%speeds[i]==0) success.push(cnt/speeds[i]);
else success.push(cnt/speeds[i]+1);
}
int front = success.front();
int cnt=0;
while(!success.empty()){
if(front>=success.front()){
cnt++;
success.pop();
}else{
front=success.front();
answer.push_back(cnt);
cnt=1;
success.pop();
}
}
answer.push_back(cnt);
return answer;
}
https://programmers.co.kr/learn/courses/30/lessons/42586
Author And Source
이 문제에 관하여([C++/프로그래머스] 기능개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@513sojin/C프로그래머스-기능개발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)