Notice
Recent Posts
Recent Comments
Link
천리길도 한걸음부터
문제06. 실패율⭐⭐ 본문
- 저자 권장 시간 : 60분
- 권장 시간 복잡도 : O(M+NlogN)
- 출제 : 2019 KAKAO BLIND RECRUITMENT
import java.util.HashMap;
class Solution {
public int[] solution(int N, int[] stages) {
// 1. 스테이지별 도전자 수를 구함
int[] challenger = new int[N+2];
for (int i=0; i<stages.length; i++) {
challenger[stages[i]] += 1;
}
// 2. 스테이지별 실패한 사용자 수 계산
HashMap<Integer, Double> fails = new hashMap<>();
double total = stages.length;
// 3. 각 스테이지를 순회하며, 실패율 계산
for (int i=1; i<= N; i++) {
if (challenger[i] == 0) { // 4. 도전한 사람이 없는 경우, 실패율은 0
fails.put(i, 0.);
}
else {
fails.put(i, challenger[i]/total); // 5. 실패율 구함
total -= challenger[i]; // 6. 다음 스테이지 실패율을 구하기 위해 현재 스테이지의 인원을 뺌
}
}
// 7. 실패율이 높은 스테이지부터 내림차순으로 정렬
return fails.entrySet().stream().sorted((o1, o2) -> Double.compare(o2.getValue(), o1.getValue())).mapToInt(HashMap.Entry::getKey).toArray();
}
}
으아아.. 리턴하는 부분 정렬하고 형변환? 하는게 일이네ㅋㅋㅋ 낯설어..
'코딩 테스트 합격자 되기_자바💜' 카테고리의 다른 글
문제08 올바른 괄호⭐⭐ (0) | 2024.08.15 |
---|---|
문제07 방문 길이⭐⭐ (0) | 2024.08.14 |
문제05. 행렬의 곱셈⭐ (0) | 2024.08.10 |
문제04. 모의고사⭐ (0) | 2024.08.08 |
문제03 두 개 뽑아서 더하기⭐ (0) | 2024.08.07 |