프로그래머스(Programmers)
기능개발
cosmohoo
2021. 9. 5. 22:00
반응형
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int last = progresses.size(); //3개 원소면 3리턴
int end = last;
int cnt =0;
int start =0;
while(end > 0)
{
for(int i=0; i<last; i++)
{
if(progresses[i] <=100)
{
progresses[i] += speeds[i];
}
if( i == (last -1))
{
for(int j=start; j< last; j++) //이전것까지 확인
{
if(progresses[j] >= 100) //다 되었으면
{
cnt++;
}
else
{
start = j; break;
}//다음것이 초과하지 못하였으면 해당것만 넣고 끝
}
if(cnt >0)
{
answer.push_back(cnt);
end -=cnt;
cnt=0;
}
}
}
}
return answer;
}
=> progresses 배열에 speeds 배열의 수를 차례대로 더해 100이 넘는 배열을 찾습니다.
=> progresses 배열에 100이 넘은 배열이 있을 경우, 앞에서부터 차례로 answer배열에 삽입합니다.
=> progresse배열 뒷부분에 100이 넘은 원소가 있더라도 앞부분에서 100을 넘지 못하였을 경우에는 answer에 삽입하지 않습니다.
=> 해당 과정을 answer 배열 원소 수와 progresses 배열 원소수와 같아질 때까지 반복합니다.
*스택과 힙을 이용해 풀수풀 수 있는 문제라고는 하나, 제한된 수의 크기가 크지 않아 사용하지 않고 풀 수 있는 문제였습니다.
반응형