문제 링크

요약

  • 무한루프에 안빠지게 조심하자.

최종

  • Queue를 사용하는 문제고, queue를 사용하면 풀 수 있지만 queue 자료구조를 사용하지는 않았다.
    • 대신 index를 움직여서 인자로 주어진 progresses 가 queue처럼 작동하도록 했다.
#include <string>
#include <vector>
 
using namespace std;
 
vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> ret;
    int iter = 0;
 
    while (iter < progresses.size()) {
        int completed = iter;
 
        for (int i = iter; i < progresses.size(); i++) {
            progresses[i] += speeds[i];
        }
 
        for (int i = iter; i < progresses.size(); i++) {
            if (progresses[i] < 100) {
                iter = i;
                break;
            } else if (i + 1 == progresses.size()) {
                iter = i + 1;
            }
        }
 
        if (completed < iter) {
            ret.push_back(iter - completed);
        }
    }
 
    return ret;
}
  • 여기서 좀 삽질했던건 저 L21-23 이다.
    • 이 코드가 없으면 남아있는 모든 놈이 100보다 클 때 iter 가 움직이지 않아 무한루프를 돈다.