[프로그래머스] 실패율 - JAVA

2024. 9. 21. 01:16·알고리즘

 

 

풀이

import java.util.*;

class Solution {
    public int[] solution(int N, int[] stages) {
        int[] answer = new int[N];
        double[] noClearUser = new double[N];
        double[] reachUser = new double[N];
        HashMap<Integer, Double> map = new HashMap<>();
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < stages.length; j++) {
                if (stages[j] == i+1) {
                    noClearUser[i]++;
                }
                if (stages[j] >= i+1) {
                    reachUser[i]++;
                }
            }

            if (noClearUser[i] == 0.0 || reachUser[i] == 0.0) {
                map.put(i+1, 0.0);
            } else {
                map.put(i+1, noClearUser[i] / reachUser[i]);
            }
        }
        List<Integer> keySet = new ArrayList<>(map.keySet());
        keySet.sort((a, b) -> map.get(b).compareTo(map.get(a)));
        for (int i = 0; i < N; i++) {
            answer[i] = keySet.get(i);
        }
        return answer;
    }
}

 

 

실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

 

noClearUser 배열에는 각 스테이지에는 도착했지만 (stages[j] == i) 아직 클리어하지 못한 플레이어의 수를 넣는다.

reachUser 배열에는 스테이지에 도달한 플레이어의 수(stages[j] >= i+1) 를 넣는다.

 

noClearUsers[i]와 reachUser[i]를 나누어 실패율을 구해야 하는데 이 둘이 0.0인지 먼저 체크를 해야한다. (ArtihmeticException 에러) 

0.0이면 해당 스테이지 실패율에 0.0을 넣고, 0.0이 아니라면 실패율을 구해서 넣는다.

 

그 다음 실패율에 따라 내림차순으로 정렬하기 위해 map.keySet을 사용해서 map에 저장한 모든 스테이지를 가져오고 ArrayList에 저장했다. 두 스테이지 번호 a, b를 비교해서 정렬 기준을 설정하고 실패율이 높은 순서로 정렬했다.

 

저작자표시 비영리 변경금지 (새창열림)
'알고리즘' 카테고리의 다른 글
  • [알고리즘] Java로 배우는 이진탐색 - feat.백준(숫자 카드 2)
  • [프로그래머스] 크레인 인형뽑기 게임 - JAVA
  • [백준] 1181번: 단어 정렬 - JAVA
  • [백준] 11650번: 좌표 정렬하기 - JAVA
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    spring
    Java
    데이터베이스
    변수
    jsp
    Security
    객체
    백준
    성능최적화
    프로그래머스
    알고리즘
    HTTP
    게시판만들기
    MVC
    DB
    최주호
    자바
    html
    스프링
    다형성
    생성자
    의존성주입
    sql
    javascript
    김영한
    Spring Security
    Database
    자바스크립트
    Swift
    JPA
  • hELLO· Designed By정상우.v4.10.0
뚜비
[프로그래머스] 실패율 - JAVA
상단으로

티스토리툴바