🔗 실패율
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
// N : 전체 스테이지 개수
// stages : 사용자 당 현재 멈춰있는 스테이지 번호
// 실패율이 높은 스테이지부터 스테이지 번호 정렬
//실패율
//=스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수/스테이지에 도달한 플레이어 수
// 스테이지 당 실패율
Map<Integer,Double> fail=new HashMap<>();
for(int i=0;i<N;i++){
int []cnt=clearCnt(stages,i);
if(cnt[0]+cnt[1]!=0){
fail.put(i+1,(double)cnt[0]/(cnt[0]+cnt[1]));
}
else{
fail.put(i+1,0.0);
}
}
return fail.entrySet().stream()
.sorted((o1,o2)->Double.compare(o2.getValue(),o1.getValue()))
.mapToInt(HashMap.Entry::getKey).toArray();
}
private int[] clearCnt(int []stages, int currentStage){
int []cnt=new int [2];
for(int i=0;i<stages.length;i++){
int stage=stages[i]-1;// 현 사용자의 스테이지
if(currentStage<stage){
cnt[1]++;//현 스테이지를 클리어한 사용자 수
}
else if(currentStage==stage){
cnt[0]++;//도달했지만 클리어 못한 사용자 수
}
}
return cnt;
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #17680 : [1차] 캐시 - JAVA (1) | 2025.01.21 |
---|---|
[ 프로그래머스 ] #17679 : [1차] 프렌즈4블록 - JAVA (0) | 2025.01.21 |
[ 프로그래머스 ] #17677 : [1차] 뉴스 클러스터링 - JAVA (0) | 2025.01.12 |
[ 프로그래머스 ] #12978 : 배달 - JAVA (0) | 2025.01.09 |
[ 프로그래머스 ] #12905 : 가장 큰 정사각형 찾기 - JAVA (0) | 2025.01.06 |