-
[알고리즘] Permutations 순열Archive/CS & App 2022. 5. 5. 22:49728x90
Permutations
순열 또는 치환은 순서가 부여된 임의의 집합을 다룬 순서로 뒤섞는 연산
n! P(n, k) = -------- (n - k)!
// Algorithm/Permutation // // Created by Yongwoo Marco on 2022/05/05. // // Marco's Style func permuteCount(_ n: Int, _ k: Int) -> Int { return (0..<k).reduce(1) { $0 * (n - $1) } } print(permuteCount(5, 3)) // returns 60 print(permuteCount(50, 6)) // returns 11441304000 print(permuteCount(9, 4)) // returns 3024 // Marco's Style let letters = ["a", "b", "c"] var result = [[String]]() func permuteGenerater<T>(_ a: [T], _ n: Int) { if n == 0 { result.append(a as? [String] ?? []) } else { var a = a permuteGenerater(a, n - 1) for i in 0..<n { a.swapAt(i, n) permuteGenerater(a, n - 1) a.swapAt(i, n) } } } permuteGenerater(letters, letters.count - 1) print(result) // [["a", "b", "c"], // ["b", "a", "c"], // ["c", "b", "a"], // ["b", "c", "a"], // ["a", "c", "b"], // ["c", "a", "b"]]
Reference By raywenderlich/swift-algorithm-club
728x90'Archive > CS & App' 카테고리의 다른 글
[Book] 오브젝트 - 02. 객체지향 프로그래밍 (Object Oriented) (0) 2022.05.19 [알고리즘] Combination 조합 (0) 2022.05.06 [Book] 오브젝트 - 01. 객체, 설계 (Object Oriented) (0) 2022.05.05 [Book] 오브젝트 - 00. 들어가며 (Object Oriented) (0) 2022.05.04 [알고리즘] Factorial (0) 2022.05.04