본문 바로가기

코딩 테스트/Lv.1

[프로그래머스] 실패율 with Kotlin

문제

게임 스테이지 별 실패율을 구해 내림차순 정렬하여 실패율이 높은 스테이지 순서대로 반환하는 문제

 

풀이 과정

  • 실패율 = 도달했으나 성공하지 못한 플레이어 수 / 도달한 플레이어 수
  • Map에 스테이지 별 실패율을 넣어 저장
  • values를 기준으로 내림차순 정렬 이후 key값 반환

 

코드

class Solution {
    fun solution(N: Int, stages: IntArray): IntArray {
        var answer = IntArray(N)
        val stage = HashMap<Int, Double>()
        
        // 스테이지 별 실패율 저장
        for(i in 1 .. N){
            var failPercent = 0.0
            val a = stages.count{it==i}.toDouble()
            val b = stages.count{it >= i}.toDouble()
            
            if(stages.count{it == i} != 0) failPercent = a / b
            stage.put(i, failPercent)
        }
        
        // 실패율에 따른 내림차순
        var stageList = stage.toList()
        stageList = stageList.sortedByDescending{it.second}
        
        //스테이지 저장
        for(i in stageList.indices){
            answer[i] = stageList[i].first
        }
        
        return answer
    }
}