반응형
https://programmers.co.kr/learn/courses/30/lessons/42889
[ 문제풀이 ]
매우 간단한 문제이다. 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 |
댓글