Kotlin/코딩테스트

[프로그래머스] 롤케이크 자르기 - kotlin

깨노비 2023. 4. 23. 12:36
728x90
반응형

문제 설명
철수는 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 합니다. 이 롤케이크에는 여러가지 토핑들이 일렬로 올려져 있습니다. 철수와 동생은 롤케이크를 공평하게 나눠먹으려 하는데, 그들은 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많습니다. 그래서 잘린 조각들의 크기와 올려진 토핑의 개수에 상관없이 각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것으로 생각합니다.

class Solution {
    fun solution(topping: IntArray): Int {
        var answer: Int = 0
        val leftMap = mutableMapOf<Int, Int>()
        val rightMap = mutableMapOf<Int, Int>()

        for (i in topping) {
            rightMap[i] = rightMap.getOrDefault(i, 0) + 1
        }

        var cnt: Int = 0
        var anotherCnt: Int = rightMap.count()

        for (i in topping) {
            if (leftMap[i] == null) {
                if (answer > 0) break
                cnt++
                leftMap[i] = 1
            }

            rightMap[i] = rightMap[i]!! - 1
            if (rightMap[i] == 0) anotherCnt--

            if (cnt == anotherCnt) answer++
        }

        return answer
    }
}
728x90
반응형