반응형
조합(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)
결과
작동 순서
말로 설명하기 어려워서, 그림으로 표현하였습니다.
반응형
'Swift' 카테고리의 다른 글
[Swift] @escaping 클로저 (escaping closure) (1) | 2024.12.18 |
---|---|
백준 14501번 퇴사 Swift (2) | 2024.11.12 |
[Swift] Optional Unwrapping (4) - 옵셔널 체이닝 (Optional Chaining) (2) | 2024.04.19 |
[Swift] Optional Unwrapping (3) - 닐 코얼레싱 (Nil-Coalescing) (0) | 2024.01.18 |
[Swift] Optional Unwrapping (2) - 옵셔널 바인딩 (Optional Binding) if let , guard let (1) | 2024.01.15 |