programmers.co.kr/learn/courses/30/lessons/42889
레벨 2 문제
정렬을 사용하는 문제였다.
1. 각 문제마다 푼 사람의 수를 저장한다.
2. 실패율을 구하기 위해
현재 스테이지 사람/len-(이전 스테이지까지의 누적)을 저장한다.
형변환 주의하자
++ 문제 조건에서
- 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.
라고 했으므로 len = 0인 경우 실패율은 무조건 0이다.
3. 소팅함수를 구현한다.
4. answer에 인덱스 값을 넣어준다.
#include <string>
#include <vector>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct s{
double failp;
int idx;
};
bool cmp(const s &t1, const s &t2){
if(t1.failp == t2. failp){
return t1.idx < t2.idx;
}
return t1.failp > t2.failp;
}
vector<int> solution(int N, vector<int> stages) {
vector<int> answer;
vector<int> solve(N+1);
vector<s> fail;
int len = stages.size();
for(int i=0; i<len; i++){
solve[stages[i]]++;
}
for(int i=1; i<=N; i++){
len -= solve[i-1];
if(len > 0){
double p = (double)solve[i]/len;
fail.push_back({p,i});
}else {
fail.push_back({0,i});
}
}
sort(fail.begin(), fail.end(), cmp);
for(int i=0; i<N; i++){
answer.push_back(fail[i].idx);
}
return answer;
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스:고득점kit] 이중우선순위큐 (0) | 2021.09.20 |
---|---|
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] [1차]캐시 (5) | 2021.03.03 |
[프로그래머스 2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 (0) | 2021.02.21 |
[프로그래머스 2020 KAKAO BLIND RECRUITMENT] 문자열 압축 (1) | 2021.02.12 |
[프로그래머스 2020 카카오 인턴십] 키패드 누르기 (0) | 2021.01.21 |
댓글