2019 KAKAO BLIND RECRUITMENT_실패율 본문

알고리즘_프로그래머스/KAKAO

2019 KAKAO BLIND RECRUITMENT_실패율

giron 2021. 3. 18. 17:27
728x90

간단히 보이는 문제였는데 예외처리를 하는데에서 시간이 조금 걸렸다. (0으로 나눈다던가...) 

그리고 풀긴 풀었지만 코드가 조금 맘에 안들긴 하다. 조금 난잡한 느낌(?)..!

하지만 처음으로 맥북으로 코딩해보아서 좋았다..ㅋㄷㅋㄷㅋㄷㅋㄷㅋㄷㅋㄷ

#include <string>
#include <vector>
#include <utility>
#include <iostream>
#include <algorithm>
using namespace std;

int arr[501];    

bool compare(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<int, int>> v;
    vector<pair<double, int>> v2;
    for(int i=0;i<=501; ++i){
        if(i!=0 && i<=N)
            arr[i]=0;
        else
            arr[i]=-1;
    }

    double size = stages.size();
    
    
    for(int i=0; i<size; ++i){
        if(stages[i] <=N)
            arr[stages[i]]++;
    }
    for(int i=0; i<501; ++i){
        if(arr[i] != -1){
            v.push_back({i,arr[i]});          
        }
    }
    sort(v.begin(), v.end());
    for(int i=0; i<v.size(); ++i){
        double tmp = (double)v[i].second;
        double hp = tmp/size;
        if(size<=0){
            v2.push_back({0,v[i].first});
        }else
        v2.push_back({hp, v[i].first});
        size-=tmp;
        
    }
    sort(v2.begin(), v2.end(), compare);
    for(int i=0;i<v2.size(); ++i){
    
        answer.push_back(v2[i].second);
    }
    return answer;
}
728x90
Comments