실패율 계산해서 store 벡터에 넣어주는데 이때 count 또는 size가 0일 때 예외처리를 해줘야한다.
값을 모두 구한 후 역순으로 정렬하고, answer 벡터에 답을 넣어준다.
이 때 반복문을 순회하면서 같은 확률이 있다면 오름차순으로 정렬해준다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<pair<double, int>> store;
int size = stages.size();
for(int i = 0; i < N; i++) {
int count = 0;
for(int j = 0; j < stages.size(); j++) {
if(stages[j] == i + 1) {
count++;
}
}
double per;
if(count == 0 || size == 0) {
per = 0;
}
else {
per = (double)count / (double)size;
}
store.push_back( { per, i + 1 } );
size -= count;
}
sort(store.begin(), store.end(), greater<pair<double, int>>());
for(int i = 0; i < N; i++) {
if (i < N - 1 && store[i].first == store[i + 1].first && store[i].second > store[i + 1].second) {
int cur = i;
while(cur < N - 1 && store[cur].first == store[cur + 1].first) {
cur++;
}
sort(store.begin() + i, store.begin() + cur + 1);
}
answer.push_back(store[i].second);
}
return answer;
}
|
cs |
bool cmp(const pair<double,int>&a, const pair<double,int>&b){ if(a.first==b.first) return a.second<b.second; return a.first>b.first; } | cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]탑 (0) | 2020.03.07 |
---|---|
[프로그래머스][1차] 다트 게임 (0) | 2020.03.06 |
[프로그래머스][1차] 비밀지도 (0) | 2020.03.06 |
[프로그래머스]문자열 내 마음대로 정렬하기 (0) | 2020.03.06 |
[프로그래머스]2016년 (0) | 2020.03.06 |