[kotlin] 코틀린으로 조합 생성 알고리즘 작성하기

조합(combinations)은 원소들을 순서에 상관없이 선택하여 만들어진 부분 집합을 말합니다. 코틀린을 사용하여 조합을 생성하는 알고리즘을 작성해보겠습니다.

알고리즘 개요

주어진 집합에서 n개의 원소를 선택하는 모든 가능한 조합을 생성합니다. 기본적으로 재귀 함수를 사용하여 모든 조합을 찾습니다.

코틀린 코드 작성

아래는 주어진 리스트에서 조합을 생성하는 코틀린 코드의 예시입니다.

fun <T> combinations(elements: List<T>, k: Int): List<List<T>> {
    if (k == 0) {
        return listOf(emptyList())
    }
    if (elements.isEmpty()) {
        return emptyList()
    }
    val first = elements.first()
    val rest = elements.drop(1)
    val withFirst = combinations(rest, k - 1).map { it + first }
    val withoutFirst = combinations(rest, k)
    return withFirst + withoutFirst
}

위의 코드는 combinations 함수를 정의하고, 주어진 리스트와 선택할 원소 수를 받아 모든 조합을 반환합니다.

사용 예시

아래는 combinations 함수의 사용 예시입니다.

fun main() {
    val list = listOf(1, 2, 3, 4)
    val result = combinations(list, 2)
    println(result) // 출력: [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
}

마무리

코틀린을 사용하여 조합을 생성하는 간단한 알고리즘을 작성하는 방법에 대해 알아보았습니다. 이를 응용하여 다양한 문제를 해결할 수 있습니다.

참고 문헌: Kotlin Docs

궁금한 점이 있으시면 언제든지 물어보세요!