ALGORITHM ๐Ÿค–/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์‹คํŒจ์œจ

daxx0ne 2023. 4. 26. 14:32

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;
    }
}