카카오 - 실패율
문제
풀이
이 문제에서 주의해야할 것은 남은 인원으로 나눠줄 때 인원이 0일 때를 고려해야 한다.
코드
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
bool ft_compare(pair<int, double> a, pair<int, double> b)
{
if (a.second == b.second)
return a.first < b.first;
return a.second > b.second;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, double>> tmp;
int people = stages.size();
map<int, int> st;
double error;
for (int i = 0; i < stages.size(); i++)
st[stages[i]]++;
int opt = 0;
for (int i=1;i<=N;i++)
{
people -= opt;
if (people == 0)
error = 0;
else
error = (double)st[i] / (double)people;
opt = st[i];
tmp.push_back(make_pair(i, error));
}
sort(tmp.begin(), tmp.end(), ft_compare);
for (int i = 0; i < tmp.size(); i++)
answer.push_back(tmp[i].first);
return answer;
}
int main()
{
vector<int> b = { 4, 4, 4, 4 };
vector<int> ans = solution(4, b);
for (auto x : ans)
cout << x << ' ';
}
Author And Source
이 문제에 관하여(카카오 - 실패율), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lsmmay322/카카오-실패율저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)