-
기능개발프로그래머스(Programmers) 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 배열 원소수와 같아질 때까지 반복합니다.
*스택과 힙을 이용해 풀수풀 수 있는 문제라고는 하나, 제한된 수의 크기가 크지 않아 사용하지 않고 풀 수 있는 문제였습니다.
반응형'프로그래머스(Programmers)' 카테고리의 다른 글
부족한 금액 계산하기 C++ (0) 2021.09.07 로또의 최고순위와 최저순위 (0) 2021.09.06 프로그래머스 - 탑 C++ (0) 2020.07.11 프로그래머스 - 다리를 지나는 트럭 C++ (0) 2020.07.11 프로그래머스 - 전화번호 목록 C++ (0) 2020.07.11