https://school.programmers.co.kr/learn/courses/30/lessons/42889
간단한 구현형..인것같다
이중포문 돌면서
스테이지 지나간 애들(total), 도전중인 애들 (fail)을 카운팅하고
double형으로 나눠주고 예외처리 해주고
pair 형태의 벡터에다가 넣어주고 정렬해주면 끝
정렬은 당연히 비교함수 만들어서 넣어줬다
우선순위는
실패율이 큰 것부터
실패율이 같으면 스테이지가 작은 것부터.
그러면 끝인데
왜 오래걸렸냐면
ㅋㅋㅋ
double로 형변환 안해줬따
ㅄ
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool compare(pair<int, double> A, pair<int, double> B) {
if (A.second == B.second) {
return A.first < B.first;
}
else {
return A.second > B.second;
}
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, double>> scores;
for (int i = 1 ; i < N+1 ; i++) {
int total = 0;
int fail = 0;
double rate = 0.0f;
for (int j = 0 ; j < stages.size() ; j++) {
if (stages[j] > i) {
total += 1;
}
else if (stages[j] == i) {
total += 1;
fail += 1;
}
}
if (total == 0) rate = 0;
else rate = (double)fail / total;
scores.emplace_back(make_pair(i, rate));
}
sort(scores.begin(), scores.end(), compare);
for (auto& s : scores) {
answer.emplace_back(s.first);
}
return answer;
}