실패율

Heeeoh·2023년 3월 24일
0

프로그래머스

목록 보기
17/26
post-thumbnail

🔍문제 분석

✔️ 출처

https://school.programmers.co.kr/learn/courses/30/lessons/42889

📖 문제


맵을 사용하여 풀이하였다. 또한 키값에 대한 value의 정렬이 필요했다.

🔅 문제 풀이


import java.util.*;

class Solution {
    public int[] solution(int N, int[] stages) {
        int[] stage = new int[N+2]; //1:1 대응
        int tmp = stages.length; //총 인원수
        
        //인덱스 자체가 스테이지,  값은 인원수 
        for(int i = 0; i < stages.length; i++) {
            stage[stages[i]]++;
        }
            
        HashMap<Integer, Double> map = new HashMap<>();
            
        int tme = 0;
        for(int i = 1; i < stage.length -1; i++) {
        	// 틀린사람이 없음 
            if(stage[i] == 0){ 
                map.put(i,0.0);
            }else{ // 실패율 저장 (key는 스테이지, 값은 실패율);
                map.put(i,(double)stage[i] / (tmp - tme));
                tme += stage[i]; // 저장완료된 인원
            }
        }
         // value를 기준으로 key값을 역정렬한다.
        List<Integer> list = new ArrayList<>(map.keySet());
        Collections.sort(list,((o1, o2) -> Double.compare(map.get(o2), map.get(o1))));
        int[] answer = new int[list.size()];
        for(int i = 0;  i < answer.length; i++){
            answer[i] = list.get(i);
        }
 
        
        return answer;
    }
}


❗ 오답노트 / 필요한 지식

  1. 람다식을 사용할 줄 알아야한다.
profile
열심히 살자

0개의 댓글