[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
궁금한 점이 있으시면 언제든지 물어보세요!