본문 바로가기
Problem Solving/카카오 블라인드 기출

2019 - 실패율

by Libi 2021. 8. 8.
반응형

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

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

[ 문제풀이 ]

매우 간단한 문제이다. 1~N 번 스테이지에 도전 중인 유저의 수를 구한 후 1~N 번 스테이지를 돌면서 각 스테이지의 실패율을 구해주면 된다.

실패율을 double형으로 선언하는 것만 주의해주면 된다.

import java.util.*;

class Solution {
    class Node implements Comparable<Node> {
        int idx;
        double failRate;
        
        Node (int idx, double failRate) {
            this.idx = idx;
            this.failRate = failRate;
        }
        
        public int compareTo(Node o) {
            if (this.failRate == o.failRate) {
                return this.idx - o.idx;
            }
            return Double.compare(o.failRate, this.failRate);
        }
    }
    
    public int[] solution(int N, int[] stages) {
    	//각 스테이지에 도전 중인 유저의 수
        double[] people = new double[N + 2];
        for (int p : stages) {
            people[p]++;
        }
        
        double total = stages.length; //전체 유저의 수
        ArrayList<Node> nodes = new ArrayList<>();
        //1~N 번 스테이지를 돌면서
        for (int i = 1; i <= N; ++i) {
        	//i번 스테이지에 도달한 유저가 없는 경우
            if (people[i] == 0) {
            	nodes.add(new Node(i, 0));
            }
            //i번 스테이지에 도달한 유저가 있는 경우
            else {
            	nodes.add(new Node(i, people[i] / total));
            }
            
            total -= people[i]; //전체 유저의 수를 감소
        }
        
        Collections.sort(nodes);
        
        int[] answer = new int[N];
        for (int i = 0; i < nodes.size(); ++i) {
            answer[i] = nodes.get(i).idx;
        }
        return answer;
    }
}

 

 

반응형

'Problem Solving > 카카오 블라인드 기출' 카테고리의 다른 글

2019 - 무지의 먹방 라이브  (0) 2021.08.08
2019 - 후보키  (0) 2021.08.08
2019 - 오픈채팅방  (0) 2021.08.08
2018 - [3차] n진수 게임  (0) 2021.08.07
2018 - [3차] 파일명 정렬  (0) 2021.08.07

댓글