티스토리 뷰

반응형

 

stages배열이 주어지면

반복문을돌면서 1~N까지의 도전중인 사용자(challenging),

스테이지를 클리어한 사용자(clear)를 count 해준다

challenging과 clear모두 해당 인덱스보다 크거나같아야한다

 

그렇게 challenging, clear를 통해

실패율을 구해주고,

vector<인덱스, 실패율>을 넣어주어

실패율을 기준으로 내림차순으로 정렬해주고,

실패율이 같으면 인덱스를 기준으로 오름차순으로 정렬해준다

 

 

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


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

vector<int> solution(int N, vector<int> stages) {
    double failure;
    vector<int> answer;
    vector<pair<int,double>> result;
    

    
    for(int j=1; j<=N; j++){
        int challenging=0, clear=0;
        for(int i=0; i<stages.size(); i++){
            if(stages[i]>=j){
                if(stages[i]==j){
                    clear++;
                    challenging++;
                }
                else
                clear++;
            }
        }
        
        if(clear==0){
            failure=0.0;
        }
        else{
            failure=(double)challenging/clear;
        }
        result.push_back(make_pair(j,failure));
    }
    sort(result.begin(),result.end(),cmp);
    
    for(int i=0; i<result.size(); i++){
        cout<<result[i].first<<' '<<result[i].second<<endl;
        answer.push_back(result[i].first);
    }
    return answer;
}

clear가 0일때 예외처리를 해주어야 통과된다

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함