티스토리 뷰

알고리즘/C++

[C++] 프로그래머스 실패율

지휘리릭 2020. 2. 29. 14:35
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    
    vector<float> stageReach(N+1);
    vector<float> stageFail(N+1);
    
    int i, j;
    for(i=0; i<stages.size(); i++){
        for(j = 1; j<=stages[i]; j++){
            if(j == N+1) continue;
            stageReach[j]++;
        }
        if(stages[i] == N+1) continue;
        stageFail[stages[i]]++;
    }
    
    vector<float> failure(N+1);
    for (i =1; i <= N; i++){
        if(stageReach[i] == 0) failure[i] = 0;
        else {failure[i] = stageFail[i] / stageReach[i];}
    }
    
    float maxx; 
    int pos;
    failure[0] = -1;
    for(i = 1;i<=N;i++){
        maxx = *max_element(failure.begin(), failure.end());
        pos = find(failure.begin(), failure.end(), maxx)-failure.begin();
        answer.push_back(pos);
        failure[pos] = -1;
    }
    return answer;
}

참 어렵당

벡터의 시작은 항상 0부터인데 나 혼자 자체적으로 1부터 시작해버렸다.

0 이 나오면 안되는데 자꾸 0인덱스가 나와버렸다. 그래서 애초에 인덱스 0 값에 -1을 넣고 시작했다.

댓글