Swift

[Swift] Combination(조합)

띵지니어 2024. 6. 16. 21:18

조합(Combination)

조합이란

서로 다른 n개의 객체 중에서 r개(n≥r) 의 객체를 선택하는 방법의 수를 나타냅니다.
조합은 순서가 중요하지 않은 더 큰 집합에서 항목을 선택하는 것입니다! 
예를 들어 [1, 2, 3] 이라는 배열에서 2개를 뽑는 조합은 [1, 2], [1, 3], [2, 3] 입니다.
참고로 조합에서 순열과 달리 [1, 2] 와 [2, 1]은 같은 것으로 취급됩니다.
수식은 nCr 입니다.


코드 (Swift) - 재귀 구현

func combination<T>(_ elements: [T], _ k: Int) -> [[T]] {
    var result = [[T]]()
    
    func combi(_ index: Int, _ now: [T]) {
        if now.count == k {
            result.append(now)
            return
        }
        
        for i in index..<elements.count {
            combi(i + 1, now + [elements[i]])
        }
    }
    combi(0, [])
    return result
}

let card = readLine()!.split(separator: " ").map { Int(String($0))! }
let combiResult = combination(card, 2)

print(combiResult)

결과


작동 순서

말로 설명하기 어려워서, 그림으로 표현하였습니다.