https://programmers.co.kr/learn/courses/30/lessons/42889
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
bool organize(pair<int, double> a, pair<int, double> b) {
if (a.second == b.second) {
return a.first < b.first;
}
else {
return a.second > b.second;
}
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
map<int, int> stage_count;
vector<pair<int, float>> fail;
for (int n : stages) {
if (n <= N) {
stage_count[n]++;
}
}
int person = stages.size();
for (int i = 1; i <= N; i++) {
if (person > 0) {
fail.push_back(make_pair(i, stage_count[i] / (float)person));
person -= stage_count[i];
}
else {
fail.push_back(make_pair(i, 0));
}
}
sort(fail.begin(), fail.end(), organize);
for (auto f : fail) {
answer.push_back(f.first);
}
return answer;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 프로그래머스 "거리두기 확인" (0) | 2022.03.14 |
---|---|
(c++) 프로그래머스 [1차] 뉴스 클러스터링 (0) | 2022.03.08 |
(c++) 프로그래머스 괄호 변환 (0) | 2022.03.07 |
(c++) 프로그래머스 메뉴 리뉴얼 (0) | 2022.03.07 |
(c++) 프로그래머스 "행렬 테두리 회전하기" (0) | 2022.03.07 |