SMALL
https://programmers.co.kr/learn/courses/30/lessons/42889
import java.util.*;
public class Main {
public static void main(String[] args) {
int N = 5; //스테이지 수
int[] stages = {2, 1, 2, 6, 2, 4, 3, 3}; //도전중인 스테이지 번호
//스테이지 당 클리어한 사람 기록
int[] clear = new int[N + 1];
for(int i = 0; i < stages.length; i++) {
clear[stages[i] - 1]++;
}
//double형 배열에 [스테이지 번호, 실패율] 저장
//도달자 수가 0이면 실패율도 0 (if)
List<double[]> stageList = new ArrayList<>();
int total = stages.length;
for(int i = 0; i < clear.length - 1; i++) {
if(clear[i] == 0) {
stageList.add(new double[] {i, 0});
} else {
stageList.add(new double[] {i, clear[i] / (double)total});
}
total -= clear[i];
}
//람다식을 활용한 정렬, 실패율을 기준으로 정렬한다.
stageList.sort((a, b) -> Double.compare(b[1], a[1]));
int[] answer = new int[N];
for(int i = 0; i < answer.length; i++) {
answer[i] = (int)stageList.get(i)[0] + 1;
}
}
}
SMALL
'기록 > 알고리즘' 카테고리의 다른 글
[Programmers][Java] 소수 만들기 (0) | 2022.05.25 |
---|---|
[Java] Builder 패턴 (0) | 2022.03.31 |
[카카오] 신고 결과 받기 (0) | 2022.02.26 |
[백준][JAVA] 큰 수 A+B (0) | 2021.12.19 |
[Programmers] [JAVA] 더 맵게 (0) | 2021.11.05 |