Gidhub BE Developer

[Programmers] 42889. 실패율

2018-10-02
goodGid

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이 되면 나눗셈을 할 수가 없다.


Comments

Content