(프로그래머 – 1급) 실패율 – JAVA 2019 KAKAO 블라인드 모집

문제 설명

실패율


슈퍼 게임 개발자 Orelli는 큰 곤경에 처해 있습니다.

그녀가 만든 프란츠 오천성은 큰 성공을 거두었지만 최근 신규 사용자 수가 급감했습니다.

그 이유는 신규유저와 기존유저의 단계차가 너무 크기 때문입니다.

이 문제를 어떻게 처리할지 고민하던 그녀는 게임 시간을 동적으로 늘려 난이도를 조정하기로 했다.

의외로 슈퍼개발자라 대부분의 로직을 쉽게 구현하지만 실패율을 구하는 부분에서 위기에 처한다.

O’Reilly의 실패율 코드를 완성하십시오.

  • 실패율은 다음과 같이 정의됩니다.

    • 레벨에 도달했지만 아직 클리어하지 않은 플레이어 수/레벨에 도달한 플레이어 수

전체 단계 수 N과 사용자가 현재 정지한 단계의 수를 포함하는 배열을 인수로 취하면 가장 높은 실패 단계부터 내림차순으로 단계 수를 포함하는 배열을 반환하는 솔루션 함수가 수행됩니다.

비율. .

한계

  • 시리즈 N의 수는 하나 500 는 다음 자연수입니다.

  • 위상 길이 하나 200,000 다음과 같은
  • 단계적으로 하나 N+1 다음과 같은 자연수를 포함합니다.

    • 각 자연수는 사용자의 현재 도전 단계 번호를 나타냅니다.

    • 단계, N+1 최종 스테이지(N 스테이지)까지 클리어한 유저를 나타냅니다.

  • 고장률이 같은 단계가 있으면 숫자가 낮은 단계가 먼저 와야 합니다.

  • 사용자가 단계에 도달하지 않으면 단계의 실패율은 다음과 같습니다.

    0 는 다음과 같이 정의됩니다.

입력/출력 예제 Nstagesresult

5 (2, 1, 2, 6, 2, 4, 3, 3) (3,4,2,1,5)
4 (4,4,4,4,4) (4,1,2,3)

I/O 예시 설명

입력/출력 예제 #1
총 8명의 유저가 1단계에 도전했고, 그 중 한 명은 아직 레벨을 클리어하지 못했습니다.

따라서 1단계의 실패율은 다음과 같습니다.

  • 1단계 실패율: 1/8

총 7명의 유저가 Stage 2에 도전했고, 그 중 3명은 아직 레벨을 클리어하지 못했습니다.

따라서 2단계의 실패율은 다음과 같습니다.

  • 2단계 실패율: 3/7

마찬가지로 나머지 단계의 실패율은 다음과 같습니다.

  • 3단계 실패율: 2/4
  • 4단계 실패율: 1/2
  • 5단계 실패율: 0/1

각 단계의 수를 고장률 내림차순으로 정리하면 다음과 같다.

  • (3,4,2,1,5)

I/O 예제 #2

모든 사용자가 최종 단계에 있으므로 실패율은 4단계에서는 1이고 나머지 단계에서는 0입니다.

  • (4,1,2,3)
class Solution {
    public int() solution(int N, int() stages) {
        int() answer = new int(N);
        double result()=new double(N);
        int i,j=0;
        int gd_cnt=0;
        int all_cnt=0;

        for(i=0;i<N;i++){
        gd_cnt=0;
        all_cnt=0;
        answer(i)=i+1;
            for(j=0;j<stages.length;j++){
                if( i==(stages(j)-1) )
                gd_cnt+=1;
                if( i<=(stages(j)-1) )
                all_cnt+=1;                   
            }
        result(i)=(double)gd_cnt/all_cnt;
        }

        for(i=N-1;i>=1;i--){
            for(j=N-1;j>=(N-i);j--){
                if( result(j-1)<result(j) ){
                    double temp=result(j-1);
                    result(j-1)=result(j);
                    result(j)=temp;
                    int temp2=answer(j-1);
                    answer(j-1)=answer(j);
                    answer(j)=temp2;
                }
            }
        }        

        return answer;
    }
}