본문 바로가기

TLI/코드카타

2024.05.28 TIL 코트카타 62번(옹알이(2))

fun solution(babbling: Array<String>): Int {
        var answer = 0

        val speakingWords = arrayOf("aya","ye", "woo", "ma")

        makeBabbling(speakingWords, -1, StringBuilder())

        for(word in babbling) {
            if(babblings.contains(word)) {
                answer++
            }
        }

        return answer
    }

    private val babblings = mutableListOf<String>()
    fun makeBabbling(speakingWords: Array<String>, currentSpeakingIndex: Int, makedBabbling: StringBuilder): Unit {

        if(makedBabbling.length > 30)
            return

        babblings.add(makedBabbling.toString())

        for(speakingIndex in 0..speakingWords.size-1) {
            if(speakingIndex == currentSpeakingIndex)
                continue
            var currentWord = speakingWords[speakingIndex]
            makedBabbling.append(currentWord)
            makeBabbling(speakingWords, speakingIndex, makedBabbling)
            makedBabbling.delete(makedBabbling.length - currentWord.length, makedBabbling.length)
        }
    }

 

포인트

- 나올 수 있는 모든 경우의 수를 list(babblings)에 담는다.(makeBabbling 함수)

- input으로 주어진 babbling 배열의 각 원소가 babblings에 있는지 확인한다.

 

추후 개선할 점

- 정규표현식을 사용

   - 훨씬 코드도 간단해지고 빨라지는 것을 확인했다.