CodingTest/Programers

[programers] 프로그래머스(코틀린) : 실패율

JunJangE 2022. 11. 26. 02:17

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

알고리즘

- 반복문을 통해 각 스테이지에 멈춰있는 사용자의 수를 확인한다.

- 각 스테이지에 멈춰있는 사용자가 있다면 실패율을 계산하고 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

 

GitHub - junjange/KotlinAlgorithm: 내가 푼 코딩 테스트 문제와 해결법(Kotlin)

내가 푼 코딩 테스트 문제와 해결법(Kotlin). Contribute to junjange/KotlinAlgorithm development by creating an account on GitHub.

github.com