import Foundation
let arr = [1, 2, 3]
let n = 3
// O(n!)
func perm(_ current: [Int]) {
if current.count > n { return }
arr.forEach { perm(current + [$0]) }
if current.count < n { return }
print(current)
}
perm([])
// O(2^n)
func comb(_ current: [Int], _ idx: Int) {
guard current.count < n else {
print(current)
return
}
for i in idx..<arr.count {
comb(current + [arr[i]], i+1)
}
}
comb([], 0)
짧고 간단하게 구할 수 있다.
반응형
'📝 코테 > 꿀팁' 카테고리의 다른 글
[Swift] 순열, 조합 (0) | 2023.04.11 |
---|---|
[Swift] Array의 요소를 key, value를 갖는 Dictionary로 변환하기 (0) | 2023.04.11 |