[프로그래머스] 실패율(C++)[△]



#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 같은 경우이다.




© 2022. by KSC

Powered by sora