https://school.programmers.co.kr/learn/courses/30/lessons/42889
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
Map<Integer, Double> map = new HashMap<>();
for (int i = 1; i <= N; i++) {
int fail = 0; // ์คํ
์ด์ง์ ๋๋ฌํ์ผ๋ ์์ง ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด์ ์
int all = 0; // ์คํ
์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
for (int j : stages) {
if (j >= i) {
all++;
if (j == i) {
fail++;
}
}
}
double per = (double) fail / all; // ์คํจ์จ
if(fail == 0 && all == 0) { // ๋ชจ๋ ์ฌ๋๋ค์ด ์๋์กฐ์ฐจ ๋ชปํ ์คํ
์ด์ง๊ฐ ์์ ๋๋ 0์ผ๋ก ์ฒ๋ฆฌ (0 / 0 = NaN ๋ฐฉ์ง)
per = 0;
}
map.put(i, per); // key: ์คํ
์ด์ง, value: ์คํจ์จ
}
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((value1, value2) -> (map.get(value2).compareTo(map.get(value1)))); // ์คํจ์จ ๊ธฐ์ค ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
int[] answer = new int[list.size()]; // ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ key ๊ฐ์ ๋ฐฐ์ด์ ์ ์ฅ
for (int i = 0; i < N; i++) {
answer[i] = list.get(i);
}
return answer;
}
}