https://programmers.co.kr/learn/courses/30/lessons/42889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제에 제시된 제한 사항
입출력 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
float fail_rate(vector<int> stages, int cmp) {
    float not_yet = 0;
    float arrival = 0;
    
    for (int i = 0; i < stages.size(); i++) {
        if (stages[i] > cmp) {
            arrival++;
        }
        else if (stages[i] == cmp) {
            arrival++;
            not_yet++;
        }
    }
    if (arrival == 0) {
        return 0;
    }
    return not_yet / arrival;
}
 
vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    vector<float> fail;
    for (int i = 1; i < N+1; i++) {
        fail.push_back(fail_rate(stages, i));
    }
    for (int i = 1; i < N + 1; i++) {
        vector<float>::iterator max_iter = max_element(fail.begin(), fail.end());
        int max_idx = max_iter - fail.begin();
        answer.push_back(max_idx+1);
        fail[max_idx] = -1;
    }
    return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

문제에서 실패율의 정의 : 스테이지에 도달했으나 아직 클리어하지 못한플레이어 수 / 스테이지에 도달한 플레이어 수

스테이지의 개수 N, 사용자가 현재 멈춰있는 스테이지 번호의 배열 stages

실패율을 구할 때 도달한 플레이어수가 없어 arrival의 값이 0인 경우 오류이므로
도달한 플레이어 수가 0인 경우 실패율을 0으로 처리해줘야한다

 

반응형

+ Recent posts