Problem
Problem URL : 실패율
[1] Answer Code (18. 10. 02)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct game{
double value;
int row;
};
vector<game> v;
// [1]
bool compare(game &p1, game &p2){
if( p1.value == p2.value)
return p1.row < p2.row;
return p1.value > p2.value;
}
vector<int> solution(int n, vector<int> stages) {
vector<int> answer;
int size = (int) stages.size();
for(int i=1; i<=n; i++){
double total = 0;
double ing = 0;
for(int j=0; j<size; j++){
if( stages[j] == i){
ing ++;
total++;
}
if( stages[j] > i)
total++;
}
double tmp = ing / total;
// [2]
if( ing == 0 && total == 0 )
tmp = 0.0;
v.push_back({ tmp , i });
}
sort(v.begin(), v.end(), compare);
for(int i=0; i< v.size(); i++){
answer.push_back(v[i].row);
cout << v[i].row << endl;
}
return answer;
}
Review
-
(2018년)KAKAO BLIND RECRUITMENT 기출 문제.
-
2가지 주의할 점이 있다.
-
[1] : First 값은 오름차순
만약 First 값이 같다면 Second 값은 내림차순을 해야할 때
[1]처럼 compare함수를 만들어서 정렬을 해야한다. -
[2] : 분모가 0이 되면 나눗셈을 할 수가 없다.