코딩 공부 - 프로그래머스 - 실패율
문제
설명
- 실패율을 구하는 문제
- 실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, double>> vp;
vector<int> v(N+1, 0);
sort(stages.begin(), stages.end());
// 스테이지 별 도달한 사람 수 계산
for (int i = 0; i < stages.size(); i++) {
if (stages[i] >= N+1) {
break;
}
v[stages[i]] += 1;
}
// 스테이지 별 실패율 계산
int sum = 0;
for (int i = 1; i < v.size(); i++) {
if (v[i] == 0) {
vp.push_back(make_pair(i, 0));
} else {
vp.push_back(make_pair(i, (double)v[i] / (stages.size() - sum)));
sum += v[i];
}
}
// 실패율을 내림차 순으로 정렬
sort(vp.begin(), vp.end(), [](auto& first, auto& second) -> bool {
if (first.second < second.second) {
return false;
}
if (first.second == second.second) {
if (first.first > second.first) {
return false;
}
}
return true;
});
for (int i = 0; i < vp.size(); i++) {
answer.push_back(vp[i].first);
}
return answer;
}
공유하기
Twitter Facebook LinkedIn댓글을 남기시려면 Github 로그인을 해주세요