프로그래머스/Level_1

[Level_1 / C++ / 카카오] 실패율

배발자 2022. 1. 23.
반응형

  • map을 활용하여 해당 스테이지와 그 스테이지를 밟고 있는 친구들의 수를 key, value값으로 지정하자. 
  • N만큼 반복문을 돌면서 map의 해당 스테이지의 value값을 "스테이지 사이즈 -  넘지못한 친구들의 수" 로  나눠주어 그 몫을 벡터에 저장한다. (넘지못한 친구들의 수 = prev변수로 할당 ) 
  • 벡터를 실패율의 내림차순으로 정렬하여 출력하도록 한다. 

 

 

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

bool cmp (pair<int,double> v1, pair<int,double> v2){
    if(v1.second==v2.second)return v1.first < v2.first;     
    else return v1.second > v2.second;
}
vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;    
    map <int,int> m; 
    vector <pair<int, double>> v(N);       
    int prev=0;
    for(int i=0; i<stages.size(); i++) m[stages[i]]++;     
    for(int i=0; i<N; i++){           
        v[i].first= i+1;  
        if(m[i+1]==0){
          v[i].second = 0; 
          continue; 
        }   
        v[i].second = (double)m[i+1]/(stages.size()-prev);        
        prev +=m[i+1]; 
    }    
    sort(v.begin(),v.end(),cmp);     
    for(int i=0; i<v.size(); i++){
        answer.push_back(v[i].first); 
    }    
    return answer; 
}
 

코딩테스트 연습 - 실패율

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

programmers.co.kr

 

반응형

댓글