-
프로그래머스 - 실패율알고리즘 2024. 4. 29. 18:24
import java.util.*; class Solution { public int[] solution(int N, int[] stages) { int[] challenge = new int[N + 1]; // 도전한 사람 수 double[] fail = new double[N + 1]; // 실패율 int num = stages.length; // 총 사용자 수 Map<Integer, Double> map = new HashMap<>(); for(int stage : stages) { for(int i = 0; i < stage; i++) challenge[i]++; // 스테이지에 도전한 사람 수 fail[stage - 1]++; // 스테이지에 머무르는 사람 수 } // 실패율 구하기 for(int i = 0; i < fail.length - 1; i++) { if(challenge[i] != 0) fail[i] = (double) fail[i] / challenge[i]; map.put(i + 1, fail[i]); // 스테이지, 실패율 } List<Integer> result = new ArrayList<>(map.keySet()); // 내림차순 정렬 result.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1))); return result.stream().mapToInt(Integer::intValue).toArray(); } }
Map에서 value 기준으로 정렬하기가 어려웠던 문제입니다...
모든 스테이지를 클리어한 사람이 있기 때문에 배열을 만들 때, N + 1로 하여 생성했습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스 - 로또의 최고 순위와 최저 순위 (0) 2024.05.02 프로그래머스 - 다트 게임 (1) 2024.05.01 프로그래머스 - 덧칠하기 (0) 2024.04.29 프로그래머스 - 모의고사 (0) 2024.04.21 프로그래머스 - 명예의 전당 (0) 2024.04.17