오늘의 알고리즘
[C++]2019 KAKAO BLIND RECRUITMENT 실패율
하늘하늘 .
2022. 2. 13. 19:51
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const pair<double, int>& a, const pair<double, int>& b)
{
if (a.first == b.first)
return a.second < b.second;
return a.first > b.first;
}
vector<int> solution(int N, vector<int> stages)
{
vector<int> answer;
vector<pair<double, int>> vecFail;
double dFail = 0;
double dFinish = 0;
int iStageSize = stages.size();
for (int i = 1; i <= N; i++)
{
dFail = 0;
dFinish = 0;
for (int j = 0; j < iStageSize; j++)
{
// 도달시
if (stages[j] == i)
dFail += 1;
// 성공시
if (stages[j] >= i)
dFinish += 1;
}
// 도달했는지
if (dFinish != 0)
vecFail.push_back(make_pair(dFail / dFinish, i));
// 못했다면 0
else if (dFinish == 0)
vecFail.push_back(make_pair(0, i));
}
// 크기가 큰 순서대로 소트
sort(vecFail.begin(), vecFail.end(), cmp);
auto iter = vecFail.begin();
for (; iter != vecFail.end(); iter++)
answer.push_back(iter->second);
return answer;
}
처음에는 스트레스가 심한 상태에서 했는데 제대로 읽지도 않고 풀어서 어떻게 하지... 이랬는데
문제를 다시 잘 읽어보니까 도달한 지 체크만 해보면 돼서 생각보다 쉬웠다.
근데 카카오 특유의 까다로운 문제라... 좀 정신 놓고하면 큰일 난다는 걸 또 한 번 깨달았다..