풀이과정
스테이지 개수만큼 반복문을 돌려준 뒤, 사용자가 멈춰있는 스테이지의 개수를 센다.
스테이지와 값이 일치하면 분자(스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수) 스테이지의 값보다 크면 분모(스테이지에 도달한 플레이어 수)
v벡터에 실패율과 index값을 넣는다.
실패율에 따라 내림차순을 하고, 실패율이 같다면 인덱스 값에 따라 오름차순 해준다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(pair<double,int> a, pair<double,int> b){
if(a.first == b.first){
return a.second < b.second;
}
else return a.first > b.first;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<double, int>> v;
sort(stages.begin(), stages.end());
for(int i = 1; i <= N; i++){
int a = 0, b = 0;
for(int j = 0; j < stages.size(); j++){
if(stages[j] == i) a++;
if(stages[j] >= i) b++;
}
if(b == 0) v.push_back({0, i});
else v.push_back({(double)a / b, i});
}
sort(v.begin(), v.end(), cmp);
for(int i = 0; i < N; i++){
answer.push_back(v[i].second);
}
return answer;
}