https://programmers.co.kr/learn/courses/30/lessons/42889
- 각 스테이지마다 남은 도전자와 실패율을 계산한 뒤에 실패율이 높은 스테이지부터 내림차순으로 answer에 담아주면 된다.
- 스테이지 번호와 실패율을 pair로 담아 소팅해줘도 되는데 idx 처리하는게 귀찮아서 그냥 실패율만 계산해서 최대값을 구한뒤 -INF를 넣어서 제외시키는 방식으로 풀었다. 이래도 제한범위가 좁아서 충분히 통과한다.
#include <string>
#include <vector>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<double> rate;
double user = stages.size();
for(int i = 1; i<=N; ++i){
double cnt = 0;
for(int j = 0; j<stages.size(); ++j) {
if(stages[j] == i) cnt++;
}
if(cnt == 0) rate.push_back(0);
else rate.push_back(cnt/user);
user -= cnt;
}
for(int i = 0; i<N; ++i) {
auto it = max_element(rate.begin(), rate.end());
answer.push_back(it - rate.begin() + 1);
*it = -INF;
}
return answer;
}
'Algorithm > programmers' 카테고리의 다른 글
2019 Kakao blind 42891 - 무지의 먹방 라이브(배열 순회, 우선순위큐) c++ 풀이 (0) | 2021.09.06 |
---|---|
2019 Kakao blind 42890 - 후보키(완전탐색, 비트마스킹) c++ 풀이 (0) | 2021.09.06 |
2019 Kakao blind 42888 - 오픈채팅방(문자열 파싱, 구현) c++ 풀이 (0) | 2021.09.06 |
2021 Kakao blind - 광고 삽입(시간 문자열 파싱, 구간합-슬라이딩 윈도우) c++, java 풀이 (0) | 2021.09.06 |
2021 Kakao blind 72413 - 합승 택시 요금(플로이드-와샬, 완전탐색) c++ 풀이 (0) | 2021.09.06 |