X Tutup
import java.util.*; class Node implements Comparable { private int stage; private double fail; public Node(int stage, double fail) { this.stage = stage; this.fail = fail; } public int getStage() { return this.stage; } @Override public int compareTo(Node other) { if (this.fail == other.fail) { return Integer.compare(this.stage, other.stage); } return Double.compare(other.fail, this.fail); } } class Solution { public int[] solution(int N, int[] stages) { int[] answer = new int[N]; ArrayList arrayList = new ArrayList<>(); int length = stages.length; // 스테이지 번호를 1부터 N까지 증가시키며 for (int i = 1; i <= N; i++) { // 해당 스테이지에 머물러 있는 사람의 수 계산 int cnt = 0; for (int j = 0; j < stages.length; j++) { if (stages[j] == i) { cnt += 1; } } // 실패율 계산 double fail = 0; if (length >= 1) { fail = (double) cnt / length; } // 리스트에 (스테이지 번호, 실패율) 원소 삽입 arrayList.add(new Node(i, fail)); length -= cnt; } // 실패율을 기준으로 각 스테이지를 내림차순 정렬 Collections.sort(arrayList); // 정렬된 스테이지 번호 반환 for (int i = 0; i < N; i++) { answer[i] = arrayList.get(i).getStage(); } return answer; } }
X Tutup