알고리즘

프로그래머스 - 모음사전

최데브 2024. 8. 28. 13:38

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

처음에는 규칙이 보여서 수학적으로 접근해보려고 했는데 멍청해서 그런가 풀이가 안떠올랐다.

그래서 주어지는 조건으로 추측했을때 경우의 수가 엄청 많지는 않겠다 싶어서

무식하게 발생할 수 있는 경우의 수를 다 생성하는 함수를 만들고

정렬한 뒤 indexOf 를 이용해서 순서를 찾아냈다.

 

class Solution {
    fun solution(word: String): Int {
        var answer = 0
        var result = generateCombinationsWithRepetition(charArrayOf('A', 'E', 'I', 'O', 'U'),5)
        answer = result.sorted().indexOf(word) + 1
        return answer
    }
    
    fun generateCombinationsWithRepetition(
        chars: CharArray,
        maxLength: Int,
        current: String = "",
        result: MutableSet<String> = mutableSetOf()
    ): Set<String> {
        if (current.length > maxLength) {
            return result
        }

        if (current.isNotEmpty()) {
            result.add(current)
        }

        for (i in chars.indices) {
            generateCombinationsWithRepetition(chars, maxLength, current + chars[i], result)
        }

        return result
    }
}
반응형