본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 실패율

by 시아나 2022. 3. 8.

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

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr


#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

bool organize(pair<int, double> a, pair<int, double> b) {
    if (a.second == b.second) {
        return a.first < b.first;
    }
    else {
        return a.second > b.second;
    }
}

vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    map<int, int> stage_count;
    vector<pair<int, float>> fail;
    for (int n : stages) {
        if (n <= N) {
            stage_count[n]++;
        }
    }
    int person = stages.size();
    for (int i = 1; i <= N; i++) {
        if (person > 0) {
            fail.push_back(make_pair(i, stage_count[i] / (float)person));
            person -= stage_count[i];
        }
        else {
            fail.push_back(make_pair(i, 0));
        }
    }

    sort(fail.begin(), fail.end(), organize);
    for (auto f : fail) {
        answer.push_back(f.first);
    }
    return answer;
}