프로그래머스 실패율 [Java]
문제출처
https://programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
Map<Integer, Double> rate = new HashMap<>();
for(int i = 1; i <= N; i++){
int stage_count = 0; //클리어하지 못 한 사람 수
int user_count = 0; //도전한 사람 수
for(int s : stages){
if(s >= i) { user_count++; }
if(s == i) { stage_count++;}
}
if(user_count == 0){
rate.put(i, 0.0);
}
else{
rate.put(i, (double)stage_count / user_count);
}
}
List<Map.Entry<Integer, Double>> fail_list = new LinkedList<>(rate.entrySet());
fail_list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
int[] answer = new int[N];
int idx = 0;
for(Map.Entry<Integer, Double> f : fail_list){
answer[idx++] = f.getKey();
}
return answer;
}
}
문제가 안풀릴때 늘 먼저 생각해야하는 것 : 최소한 문제에서 알려준 제한사항을 모두 지켰는가?
내가 안 풀렸던 경우는 제한사항에서
- 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 으로 정의한다.
이부분을 간과하고 있었다. user_count == 0인 경우를 따로 빼주니 바로 해결됨.
문제에서 제시하는 제한사항을 최소한 다 지키고 나서 안 풀린다고 고민을 해야겠다...
다른 사람 풀이를 보니 class를 따로 빼서 하는 경우도 있고 라이브러리를 하나도 import하지 않고 푸는 방법도 있던데 자바의 사용법은 정말 무궁무진하다를 깨닫고 있다.
'문제풀이 > 코딩테스트' 카테고리의 다른 글
프로그래머스 부족한 금액 [Java] (0) | 2022.03.08 |
---|---|
프로그래머스 예산 [Java] (0) | 2022.03.06 |
프로그래머스 체육복 [Java] (0) | 2022.03.03 |
프로그래머스 약수의 개수와 덧셈 [Java] (0) | 2022.02.25 |
프로그래머스 모의고사 [Java] (0) | 2022.02.24 |