ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 실패율
    개발공부/코딩테스트 연습문제 2022. 1. 10. 10:27

    문제 설명과 제한사항

    풀이

    import java.util.*;
    
    class Solution {
        public int[] solution(int N, int[] stages) {
            int[] answer = new int[N];
            int[] reach = new int[N+1]; //도달한 스테이지
            int[] stay = new int[N+2]; //머물고 있는 스테이지
            Map<Integer,Double> fail = new HashMap<Integer,Double>();
            
            for(int i = 0; i < stages.length; i++){
                stay[stages[i]]++;
            }
            
            reach[N] = stay[N] + stay[N+1];
            
            for(int i = N-1 ; i > 0  ; i--){
                reach[i] = stay[i] + reach[i + 1];
            }
            for(int i = 1; i < N+1; i++){
                if(reach[i] == 0){
                    fail.put(i,0.0);
                    continue;
                }
                fail.put(i,(double)stay[i]/reach[i]);
            }
            
            List<Integer> keySetList = new ArrayList<>(fail.keySet());
            Collections.sort(keySetList, (o1, o2) -> (fail.get(o2).compareTo(fail.get(o1))));
    
            int i = 0;
            for(Integer key : keySetList){
                if(key <= N && key > 0) {
                    answer[i] = key;
                    i++;
                }
            }
            
            return answer;
        }
    }

    ++

    지난주에 풀다가 시간이 없어서 다시 푼 문제

     

    1. Map<Integer,Double> fail = new HashMap<Integer,Double>(); 해시맵 선언

      ㄴ import java.util.Map && HashMap -> import java.uti;.*;

    2.   fail.put(i,(double)stay[i]/reach[i]); : 해시맵 put

    3.   List<Integer> keySetList = new ArrayList<>(fail.keySet());
         Collections.sort(keySetList, (o1, o2) -> (fail.get(o2).compareTo(fail.get(o1))));

     해시맵을 밸류 중심으로 정렬하기 위해서 fail 해시맵으로 리스트를 만들고

     콜랙션에서 내림차순으로 정렬하기 위해 (o1, o2) -> (fail.get(o2).compareTo(fail.get(o1)) 이렇게 사용

     

    해시맵을 벨류값 기준으로 내림차순 정렬하는게 어려웠다. 여기저기 찾아봤지만 코드들이 다 장황해서..

    그래서 그냥 정렬 코드를 짤까하다가 그건 또 귀찮았다. 

Designed by Tistory.