실패율

HJ Kwon·2021년 12월 22일
0
  • Comparable을 상속하는 Data class를 만들어 sorting 시 우선순위를 지정하였다.
  • 다른 사람의 답을 보면 class를 다르게 사용하는 방법이 많이 보인다. kotlin 코드 스타일에 대해 더욱더 공부해야할 것 같다.
    class Data(val mStageNum: Int, val mStageFailureRate: Double): Comparable<Data> {
        override fun compareTo(other: Data): Int {
            return if (this.mStageFailureRate != other.mStageFailureRate) {
                if (this.mStageFailureRate > other.mStageFailureRate) -1
                else 1
            } else {
                if (this.mStageNum < other.mStageNum) -1
                else 1
            }
        }
    }

    fun solution(N: Int, stages: IntArray): IntArray {
        val mTotalUser = stages.size.toDouble()
        var mFailedCnt = Array<Int>(N + 2){0}
        var mResultArray = mutableListOf<Data>()
        for (i in stages.indices) {
            mFailedCnt[stages[i]]++
        }
        var mPastUser = 0
        for (i in 1 until mFailedCnt.size - 1) {
            var mP = mFailedCnt[i] / (mTotalUser - mPastUser)
            var mData = if (mP.isNaN()) Data(i, 0.0)
            else Data(i, mFailedCnt[i] / (mTotalUser - mPastUser))
            mPastUser += mFailedCnt[i]
            mResultArray.add(mData)
        }

        mResultArray.sort()

        var mAns = mutableListOf<Int>()
        for (i in mResultArray.indices) {
            mAns.add(mResultArray[i].mStageNum)
        }
        return mAns.toIntArray()
    }

0개의 댓글