-
스택/큐 알고리즘 문제 : 프로그래머스 LEVEL 2(기능개발) - 사용 언어 : C++ - 해결 날짜 : 2021-01-26
**- 해결 방법** : 우선 작업 별 소요 일 수는 (100-progresses)/speeds 임을 활용하였다. 처음에 형변환을 하지 않고 위의 식을 새로 선언한 rate vector에 push한 다음 비교하는 과정을 수행하였는데, 마지막 테스트 케이스에서 계속 오류가 발생하여 찾아보니 c++에서는 형변환 후 저장하는 과정이 강요됨을 알게되었다. 이 작업들을 돌며 앞 작업보다 작업 일수가 큰 작업이 나올때 까지 아직 배포되지 않은 작업 중 첫번째 작업과 그 뒤의 작업들을 비교하여 작업들을 추가하였고, 마지막 작업은 반복문의 종료 후 따로 추가해주었다. - 코드 ``` #include <string> #include <vector> #include <cmath> using namespace std; //(100-progresses[i]) / speeds[i] vector<int> solution(vector<int> progresses, vector<int> speeds) { vector<int> answer; vector<double> rate; //작업 별 배포하는데 필요한 소요 일 수를 저장 for(int i = 0; i<progresses.size(); i++){ rate.push_back((double)(100-progresses[i]) / (double)speeds[i]); } int temp = 0; int ans = 0; int total = 0; for(int i = 1; i<progresses.size(); i++){ ans++; //배포되지 않은 작업 중 제일 앞 작업과 그 뒤의 작업들을 비교, //앞 작업보다 작업 일수가 큰 작업이 나올 때 까지 if(ceil(rate[i]) > ceil(rate[temp])){ temp = i; answer.push_back(ans); ans = 0; } } //마지막 작업까지 추가 answer.push_back(rate.size()-temp); return answer; } ```