반응형
[구현 환경]
- C++
[문제 설명]
- 총 스테이지 N, 유저들의 현재 스테이지 vector<int> stages가 주어짐
- 모든 스테이지를 클리어한 경우 유저의 stage는 N+1로 표시됨
- 각 스테이지 별, 유저들의 실패율을 계산해서 정렬해 return할 것
- 조건 1 : 실패율이 높은 순서로 정렬
- 조건 2 : 실패율이 같을 경우 스테이지가 빠른 순서로 정렬
[함수 원형]
vector<int> solution(int N, vector<int> stages)
{
std::vector<int> answer;
return answer;
}
[풀이]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare2(pair<int, double>a, pair<int, double>b) {
if (a.second != b.second) return a.second > b.second;
return a.first < b.first;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<int> nStageClearUser(N+1,0);
vector<int> nStageCurrentUser(N + 1, 0);
vector<pair<int, double>> rank;
for (auto& stage : stages)
{
for (int i = 0; i < stage; ++i) nStageCurrentUser.at(i)++;
nStageClearUser.at(stage - 1)++;
}
for (int i=0;i<nStageClearUser.size()-1;++i)
{
if(nStageCurrentUser.at(i)!=0)
rank.emplace_back(std::make_pair(i + 1, (nStageClearUser.at(i) / (double)nStageCurrentUser.at(i))));
else
rank.emplace_back(std::make_pair(i + 1, 0.0));
}
sort(rank.begin(), rank.end(), compare2);
for (auto r : rank) {
answer.emplace_back(r.first);
}
return answer;
}
반응형
'개발 > 뇌를 말랑하게하는 코테 연습' 카테고리의 다른 글
[프로그래머스 Lv2] 가장 큰 수 (0) | 2022.06.14 |
---|---|
[프로그래머스 Lv2] 다음 큰 숫자 (0) | 2022.06.14 |
[프로그래머스 Lv2] 뉴스 클러스터링 (0) | 2022.06.14 |
[프로그래머스 Lv2] 124 나라의 숫자 (0) | 2022.06.14 |
[프로그래머스 Lv1] 로또 최고/최저 찾기 (0) | 2022.06.03 |