Kotlin/코딩테스트

[프로그래머스] 숫자 짝꿍 - kotlin

깨노비 2023. 4. 11. 00:51
728x90
반응형

두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.

import kotlin.math.min

class Solution {
    fun solution(X: String, Y: String): String {
        val xMap = X.groupingBy { chr -> chr }.eachCount()
        val yMap = Y.groupingBy { chr -> chr }.eachCount()

        val sb = StringBuilder()
        for ( i in 57 downTo 48 ) {
            val key = i.toChar()
            val cnt = min(xMap[key] ?: 0, yMap[key] ?: 0)
            repeat(cnt) {
                sb.append(key)
            }
        }

        val cnt = sb.filter { chr -> chr != '0' }.count()

        return when {
            sb.isEmpty() -> "-1"
            cnt == 0 -> "0"
            else -> sb.toString()
        }
    }

}
728x90
반응형