https://school.programmers.co.kr/learn/courses/30/lessons/42889
그냥 단순히, 모든 실패율을 다 구하고, 그 실패율을 통해 정렬하면 되는 문제. 다만, 실패율이 같으면 작은 순서가 유지되어야 해서, 안정정렬을 사용했다.
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<int, double>> ratio(N);
int l = 0, r = 0, prev;
sort(stages.begin(), stages.end());
for (int i = 1; i <= N; i++) {
prev = l;
ratio[i - 1].first = i;
while (stages[l] <= i) l++;
ratio[i - 1].second = (double)(l - prev) / (stages.size() - prev);
}
stable_sort(ratio.begin(), ratio.end(), [](const pair<int, double>& a, const pair<int, double>& b) {
return a.second > b.second;
});
for (auto& x : ratio) answer.push_back(x.first);
return answer;
}
'coding_test > programmers' 카테고리의 다른 글
lv2 / 두 큐 합 같게 만들기 / 카카오 / C++ (0) | 2022.09.01 |
---|---|
lv1 / [1차] 비밀지도 / 카카오 기출 / C++ (0) | 2022.08.07 |
lv2 / 거리두기 확인하기 / 카카오 기출 / C++ (0) | 2022.08.03 |
lv1 / 크레인 인형 뽑기 게임 / 카카오 기출 / C++ (0) | 2022.07.27 |
lv1 / 키패드 누르기 / 카카오 기출 / C++ (0) | 2022.07.13 |