본문 바로가기

기록/알고리즘

[Programmers][Java] 실패율

SMALL

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

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

import java.util.*;

public class Main {

    public static void main(String[] args) {
        int N = 5; //스테이지 수
        int[] stages = {2, 1, 2, 6, 2, 4, 3, 3}; //도전중인 스테이지 번호
        
        //스테이지 당 클리어한 사람 기록
        int[] clear = new int[N + 1];
        for(int i = 0; i < stages.length; i++) {
            clear[stages[i] - 1]++;
        }
        
        //double형 배열에 [스테이지 번호, 실패율] 저장
        //도달자 수가 0이면 실패율도 0 (if)
        List<double[]> stageList = new ArrayList<>();
        int total = stages.length;
        for(int i = 0; i < clear.length - 1; i++) {
            if(clear[i] == 0) {
                stageList.add(new double[] {i, 0});
            } else {
                stageList.add(new double[] {i, clear[i] / (double)total});
            }
            total -= clear[i];
        }
        
        //람다식을 활용한 정렬, 실패율을 기준으로 정렬한다.
        stageList.sort((a, b) -> Double.compare(b[1], a[1]));

        int[] answer = new int[N];
        for(int i = 0; i < answer.length; i++) {
            answer[i] = (int)stageList.get(i)[0] + 1;
        }
    }
}
SMALL

'기록 > 알고리즘' 카테고리의 다른 글

[Programmers][Java] 소수 만들기  (0) 2022.05.25
[Java] Builder 패턴  (0) 2022.03.31
[카카오] 신고 결과 받기  (0) 2022.02.26
[백준][JAVA] 큰 수 A+B  (0) 2021.12.19
[Programmers] [JAVA] 더 맵게  (0) 2021.11.05