No Rules Rules

실패율 (feat. 프로그래머스, 42889번) 본문

생활/코테

실패율 (feat. 프로그래머스, 42889번)

개발하는 완두콩 2022. 7. 23. 20:53
728x90
반응형

실패율
https://programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

반응형
// woohyeon.kim
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

inline bool comp(const pair<double, int>& v1, const pair<double, int>& v2)
{
    if(v1.first == v2.first)
    {
        return v1.second < v2.second;
    }
    return v1.first > v2.first;
}

vector<int> solution(int N, vector<int> stages) {
    vector<pair<double, int>> tmpl;
    auto person_count = stages.size();
    for(auto stage = 1; stage <= N; ++stage)
    {
        auto stage_fail_person_count = count(stages.begin(), stages.end(), stage);
        if(person_count > 0)
            tmpl.push_back(make_pair(stage_fail_person_count / static_cast<double>(person_count), stage));
        else
            tmpl.push_back(make_pair(0.0, stage));
        person_count -= stage_fail_person_count;
    }
    sort(tmpl.begin(), tmpl.end(), comp);
    vector<int> answer;
    for(const auto& item : tmpl)
        answer.push_back(item.second);
    return answer;
}
// *&)*@*

실패율을 기준으로 sort를 취하면 됩니다.

단, 실패율이 같은 경우는 앞선 stage가 우선되어야 하기 때문에 해당 부분만 생각해주면 됩니다.

728x90
반응형
Comments