문제
알고리즘
- 반복문을 통해 각 스테이지에 멈춰있는 사용자의 수를 확인한다.
- 각 스테이지에 멈춰있는 사용자가 있다면 실패율을 계산하고 countMap에 현재 스테이지와 실패율을 저장한다.
- 현재 스테이지에 멈춰있는 사용자가 있다면 그 사용자들은 다음 스테이지에는 도달하지 못하는 것으로 실패율을 계산하는 사용자의 수에서 빼준다.
- 실패율을 계산한 countMap은 리스트로 변환 후 오름차순 정렬을 해준다.
- 정렬은 value값을 기준으로 정렬한 후에. toMap() 키워드를 통해 다시 map 형태로 변환 후 keys 값을 저장한다.
- keys값을 IntArray로 변환 후 출력한다.
코드
class Solution {
fun solution(N: Int, stages: IntArray): IntArray {
fun solution(N: Int, stages: IntArray): IntArray {
val countMap = mutableMapOf<Int, Double>()
var n = stages.size
for (i in 1..N) {
val count = stages.count {
i == it
}
if (count != 0) {
countMap[i] = (count.toDouble() / n.toDouble())
n -= count
} else {
countMap[i] = 0.0
}
}
val keys = countMap.toList().sortedByDescending { (_, value) -> value }.toMap().keys
return keys.toIntArray()
}
}
github
'CodingTest > Programers' 카테고리의 다른 글
[programers] 프로그래머스(코틀린) : 푸드 파이터 대회 (0) | 2022.11.21 |
---|---|
[programers] 프로그래머스(코틀린) : 햄버거 만들기 (0) | 2022.10.31 |
[programers] 프로그래머스(코틀린) : 체육복 (0) | 2022.10.31 |
[programers] 프로그래머스(코틀린) : 내적 (1) | 2022.09.21 |
[programers] 프로그래머스(파이썬) : 내적 (0) | 2022.09.21 |