알고리즘/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을 넣고 시작했다.