코딩 테스트/프로그래머스
프로그래머스 실패율 c++
상어악어
2022. 7. 4. 15:37
반응형
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일때 예외처리를 해주어야 통과된다
반응형