알고리즘

릿코드 2391. Minimum Amount of Time to Collect Garbage 코틀린

rkrkrr0101 2023. 11. 21. 10:44

각 쓰레기종류마다 이동비용카운트 생성
집으로 루프돌리고 
현재 이동비용을 카운트에 추가,
현재위치에 해당쓰레기가 있으면 카운트를 res에 추가하고 초기화,
쓰레기갯수만큼 +1

 

정답

class Solution {
    fun garbageCollection(garbage: Array<String>, travel: IntArray): Int {
        val travelList= listOf(0) +travel.toList()
        var mMoveCount=0
        var pMoveCount=0
        var gMoveCount=0
        var res=0


        for ((index,value) in garbage.withIndex()){
            mMoveCount+=travelList[index]
            pMoveCount+=travelList[index]
            gMoveCount+=travelList[index]

            val mCount = value.count { it == 'M' }
            val pCount = value.count { it == 'P' }
            val gCount = value.count { it == 'G' }

            if (mCount!=0){
                res+=mMoveCount
                mMoveCount=0
                res+=mCount
            }
            if (pCount!=0){
                res+=pMoveCount
                pMoveCount=0
                res+=pCount
            }
            if (gCount!=0){
                res+=gMoveCount
                gMoveCount=0
                res+=gCount
            }
        }

        println(res)
        return res
    }
}

중복 오지게들어가서 뺴고싶은데 귀찮으니 참는다