2022. 9. 29. 15:12γios
Swift - μμ΄κ³Ό μ‘°ν© κ΅¬ννκΈ°
μμ΄κ³Ό μ‘°ν©μ μ μ§μ ꡬννλμ..?
μ€μννΈμλ μμ΄κ³Ό μ‘°ν©μ λΌμ΄λΈλ¬λ¦¬ ννλ‘ μ 곡νλ κ²μ΄ μλ€.
λλ¬Έμ μ½λ©ν μ€νΈμμ μ¬μ©ν λ μ§μ ꡬνν΄μ μ¬μ©ν΄μΌ νλ€...γ
μ 체μ μΈ λ§₯λ½μ μ΄ν΄νλ©΄ μ½κΈ° λλ¬Έμ μ 리ν΄μ νμν λλ§λ€ μ¬μ©νκ³ μ μ 리νλ€
μμ΄
μμ΄μ μλ‘ λ€λ₯Έ nκ°μ μμμμ rκ°λ₯Ό μ€λ³΅μμ΄ μμμ μκ΄μκ² μ ννλ νΉμ λμ΄νλ κ²μ μμ΄μ΄λΌκ³ νλ€.
ν΅μ¬μ μμκ° μ‘΄μ¬νκΈ° λλ¬Έμ [1, 2, 3, 4]μμ [1, 2]μ [2, 1]μ ꡬλΆν΄μ μΉ΄μ΄νΈνλ κ²μ΄ ν΅μ¬μ΄λ€.
func permutation(_ target: [String], _ targetNum: Int) {
// μμ΄μ΄ λλ μμ μ‘°ν©μ λ΄λ κ³³
var results: [[String]] = []
// νμ¬ νμνκ³ μλμ§ νμΈνλ λ°°μ΄
var check = [Bool](repeating: false, count: target.count)
func permute(_ arr: [String]) {
// μμ΄μ κ°μκ° λ½μΌλ €λ μ«μμ κ°μ λ μ’
λ£
if arr.count == targetNum {
results.append(arr)
return
}
for i in 0..<target.count {
// νμ¬ νμνλ μΈλ±μ€κ° λ°°μ΄μ λ΄κ²¨μλ€λ©΄ λμ΄κ°λ€.
if check[i] == true {
continue
} else {
check[i] = true
permute(arr + [target[i]])
check[i] = false
}
}
}
permute([])
}
μ¬κ·λ₯Ό μ΄μ©νλ κΌ DFSμ λΉμ·ν΄ 보μΈλ€..
μ‘°ν©
μ‘°ν©μ μλ‘ λ€λ₯Έ nκ°μ μμμμ rκ°λ₯Ό μ€λ³΅μμ΄ μμμ μκ΄μμ΄ μ ννλ νΉμ λμ΄νλ κ²μ μ‘°ν©μ΄λΌκ³ νλ€.
ν΅μ¬μ μμμ μκ΄μ΄ μκΈ° λλ¬Έμ checkλ°°μ΄μ μ¬μ©νμ§ μκ³ μμΌλ‘λ§ νμνλ κ²μ΄λ€.
μΈλ±μ€ 0λΆν° νμνλ€λ©΄ μΈλ±μ€κ° 1μΌλ 0μΌλμ κ°μ λ£κ³ 1λΆν° λ€μ forλ¬Έμ λλ νμμ΄λ€.
μμλ‘ [1, 2, 3, 4]κ° μμ λ μμ΄μ κ²½μ°λ [1, 2], [1, 3], [1, 4]λ₯Ό λκ³ [2, 1]μ λκ² λλλ° μ΄λ indexλ₯Ό μμμλΆν° λ λκΈ° λλ¬Έμ΄λ€. μ‘°ν©μ [1, 2], [1, 3], [1, 4]μμ [2, 1]μ΄ μλ [2, 3]μΌλ‘ κ°μΌ κ΄κ³μμ΄ κ²½μ°μ μλ₯Ό μΉ΄μ΄νΈ ν μ μλ€.
Intλ Stringμ μ νλμ§ μμ λ²μ©μ μΈ κ²μ λ΄κΈ° μν΄ Tλ₯Ό μ¬μ©ν΄μ ꡬννλ€! (λ€λ₯Έ λΆμ μ½λλ₯Ό μ°Έκ³ )
func combination<T: Comparable>(_ targetArr: [T], _ n: Int) -> [[T]] {
var results = [[T]]()
if targetArr.count < n { return results }
func cycle(_ idx: Int, _ arr: [T]) {
if arr.count == n {
results.append(arr)
return
}
for i in idx..<targetArr.count {
cycle(i + 1, arr + [targetArr[i]])
}
}
cycle(0, [])
return results
}
'ios' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Swift - components, split (1) | 2022.09.30 |
---|---|
Swift - zip (0) | 2022.09.30 |
Swift - Set νΊμ보기 (0) | 2022.09.28 |
Swift - 2μ§μλ‘ λ³ννκΈ° (0) | 2022.09.27 |
Swift - μμ€ν€μ½λ λ³ννκΈ° (0) | 2022.09.27 |