Algorithm/이코테

25.실패율

마닐라 2022. 1. 10. 12:20

📍 문제 설명

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

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

💡 접근

각 실패율에 대한 스테이지번호를 저장하기 위한 Stage 클래스를 정의하여 정렬 후 출력해주었다.

 

👩‍💻 코드

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] stages = {2,1,2,6,2,4,3,3};

        ArrayList<Stage> list = new ArrayList<Stage>();
        int[] answer = new int[n];

        Arrays.sort(stages);
        int cnt = 0;
        int nowStage = stages.length;

        //현재 도전중인 스테이지
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < stages.length; j++) {
                //현재 도전중인 사용자 수 계산
                if(stages[j] == i+1) cnt++;
            }
            //실패율 계산
            list.add(new Stage(i+1, (double) cnt/nowStage));
            nowStage -= cnt;
            cnt = 0;
       }
        Collections.sort(list);
        for(int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i).stageNum;
        }
        System.out.println(Arrays.toString(answer));
    }

    private static class Stage implements Comparable<Stage> {
        private int stageNum;
        private double failPercent;

        public Stage(int stageNum, double failPercent) {
            this.stageNum = stageNum;
            this.failPercent = failPercent;
        }

        @Override
        public int compareTo(Stage o) {
            if(this.failPercent == o.failPercent) return this.stageNum - o.stageNum;
            return Double.compare(o.failPercent, this.failPercent);
        }

        @Override
        public String toString() {
            return "Stage{" +
                    "stageNum=" + stageNum +
                    ", failPercent=" + failPercent +
                    '}';
        }
    }
}

'Algorithm > 이코테' 카테고리의 다른 글

27.정렬된 배열에서 특정 수의 개수 구하기  (0) 2022.01.10
26.카드 정렬  (0) 2022.01.10
24.안테나  (0) 2022.01.10
23.국영수  (0) 2022.01.10
22.블록 이동하기  (0) 2022.01.09