[프로그래머스] 실패율(Kotlin)
- ETC../문제 풀이
- 2021. 3. 10.
728x90
문제
이해
-
실패율 : 스테이지에 도달, but 클리어 하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
스테이지에 도달한 유저가 없을 경우 실패율 0 -
N = 전체 스테이지의 갯수
-
stage = 사용자가 멈춰있는 스테이지의 번호가 담긴 배열
-
Return -> 실패율이 높은 스테이지부터 내림차순 배열
접근
- 2개의 Map 작성
- 스테이지, 사람수
- 스테이지, 실패율
- 내림차순 정리
- answer 도출
풀이
class Solution {
fun solution(N: Int, stages: IntArray): IntArray {
var answer = IntArray(N)
val indexMap: MutableMap<Int, Int> = mutableMapOf() // 스테이지, 사람수
val failureMap: MutableMap<Int, Double> = mutableMapOf() // 스테이지, 실패율
// indexMap = (스테지이지, 멈춰있는 사람 수)
stages.forEach {
when (indexMap.containsKey(it)) {
true -> indexMap[it] = indexMap.getValue(it) + 1
false -> indexMap[it] = 1
}
}
var totalSize = stages.size
// failureMap = (스테이지, 실패율)
for (i in 1..N) {
when (indexMap.containsKey(i)) {
true -> {
failureMap[i] = (indexMap.getValue(i) / totalSize.toDouble())
totalSize -= indexMap.getValue(i)
}
false -> failureMap[i] = 0.0
}
}
val list = failureMap.toList().sortedByDescending { (_, value) ->
value
}
for (i in 0 until N) {
answer[i] = list[i].first
}
return answer
}
}
728x90
'ETC.. > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 직사각형 별찍기(Kotlin) (0) | 2021.03.08 |
---|---|
[프로그래머스] 소수 만들기(Kotlin) (0) | 2021.03.04 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자(Kotlin) (0) | 2021.03.03 |
[프로그래머스] 행렬의 덧셈 (Kotlin) (0) | 2021.02.23 |
[프로그래머스] 핸드폰 번호 가리기 (Kotlin) (0) | 2021.02.23 |