실제로 쓸 때에는 T를 특정 자료구조로 바꿔 사용하면 됩니다!
import Foundation
func permute<T>(_ target: [T], _ targetNum: Int) -> [[T]] {
var result = [[T]]()
var visited = Array(repeating: false, count: target.count)
func permutation(_ temp: [T]) {
if temp.count == targetNum {
result.append(temp)
return
}
for i in 0..<target.count {
if visited[i] {
continue
} else {
visited[i] = true
permutation(temp + [target[i]])
visited[i] = false
}
}
}
permutation([])
return result
}
func combi<T>(_ target: [T], _ targetNum: Int) -> [[T]] {
var result = [[T]]()
func combination(_ index: Int, _ temp: [T]) {
if temp.count == targetNum {
result.append(temp)
return
}
for i in index..<target.count {
combination(i + 1, temp + [target[i]])
}
}
combination(0, [])
return result
}
print(permute([1, 2, 3, 4], 2))
print(combi([1, 2, 3, 4], 2))
'알고리즘' 카테고리의 다른 글
[Swift] 백준 - 플로이드 (0) | 2022.02.07 |
---|---|
[Swift] 백준 정수 삼각형 (0) | 2022.02.04 |
[Swift] 백준 - 부분 수열의 합 (0) | 2022.02.03 |
[Swift] 프로그래머스 - 카카오 가사 검색 (0) | 2022.01.25 |
[Swift] 백준 - 미로 탐색 (0) | 2022.01.12 |
댓글