프로그래머스 lv1 실패율

이성준·2022년 6월 21일
0

알고리즘

목록 보기
10/13

사이트 : 프로그래머스
푼 날짜 : 2022-06-21
난이도 : LV1
제목 : 실패율

코드

public class 실패율 {


    public ArrayList<Integer> solution(int N, int[] stages) {

        Map<Integer,Double> result = new HashMap<>();

        for (int i = 1; i < N + 1; i++) {

            int clear = 0;
            int challenge = 0;

            for (int stage : stages) {
                if (stage >= i) {
                    clear++;
                }
                if (stage == i) {
                    challenge++;
                }
            }



            if(challenge==0||clear==0){
                result.put(i,0.0);
            }
            else{
                result.put(i,(double)challenge / clear);
            }

        }
        

        ArrayList<Integer> list = new ArrayList<>();
        list.addAll(result.keySet());
        Collections.sort(list,Comparator.comparingDouble(result::get).reversed());


        return list;
        }

풀이

  1. 한 사람당 스테이지를 하나하나 돌면서 도전하고있는지와 깼는지 를 각각 변수에 담는다. -> 이부분 시간복잡도를 못 줄여서 아쉽
  2. 스테이지에 도달한 사람이 없으면 0을 담고 아니면 실패율을 HashMap에 담는다
    3.담은 값들을 Value값으로 내림차순 정렬해준다.

0개의 댓글