[프로그래머스] 실패율(C++)[△]
in CodingTest
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
vector<int> solution(int N, vector<int> stages) {
map<int, float> tempFailRate;
vector<float> tempVal;
for (int i = 1; i <= N; i++) {
int nonClearPerson = 0;
int reachedPerson = 0;
for (vector<int>::size_type j = 0; j < stages.size(); j++) {
if (stages[j] > i) {
reachedPerson++;
}
else if (stages[j] == i) {
reachedPerson++;
nonClearPerson++;
}
}
if (reachedPerson == 0) {
pair<int, float> pair(i, 0.0f);
tempFailRate.insert(pair);
tempVal.push_back(0.0f);
}
else {
pair<int, float> pair(i, (float)nonClearPerson / reachedPerson);
tempFailRate.insert(pair);
tempVal.push_back((float)nonClearPerson / reachedPerson);
}
}
sort(tempVal.begin(), tempVal.end(), greater<float>());
vector<int> answer;
for (vector<int>::size_type i = 0; i < tempVal.size(); i++) {
for (map<int, float>::size_type j = 1; j <= tempFailRate.size(); j++) {
if (tempVal[i] == tempFailRate[j]) {
if(find(answer.begin(),answer.end(),j)==answer.end())
answer.push_back(j);
}
}
}
return answer;
}
이번 문제는 풀긴 했지만 속도가 매우 느리며 어거지로 푼 느낌이 있다. 분명 더 좋은 방법이 있으니 더 공부해서 꼭 다시 풀어보자. 이번 문제도 그리 어려운 문제는 아니었으나 좋지 않은 방법으로 풀었다. 예를 들면 float == float 같은 경우이다.