[プログラマーレベル2]偽装



に質問


スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
顔が丸いメガネ、黒いサングラスに青いTシャツのジーンズコートロングコート
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.

せいげんじょうけん

  • 服装の各行は「服装名、服装種類」からなる.
  • スパイが持っている服の数は1着以上30着以下.
  • のような名前の服は存在しません.
  • アパレルのすべての要素は文字列から構成されています.
  • すべての文字列の長さは、1または20未満の自然数であり、アルファベット小文字または「」のみから構成されます.
  • スパイは毎日少なくとも1枚の服を着ている.
  • 💡 に答える

    class Solution {
        fun solution(clothes: Array<Array<String>>): Int =
            clothes.groupBy({it[1]}, {it[0]}).map { it.value.count() + 1 }.fold(1) { total, next -> total * next } - 1
    }
    もう少し簡単です.
    class Solution {
        fun solution(clothes: Array<Array<String>>): Int =
            clothes.groupBy{ it[1] }.values.fold(1) { total, value -> total * (value.size + 1) } - 1
    }
    答え=すべての場合(未着の場合も含む)の数—何も着ない数(=1)