1. λ¬Έμ
2. μ μΆλ ₯
3. μ μΆλ ₯ μμ
4. λ¬Έμ μ€κ³
- N = 3μΈ κ²½μ°, 2 x 1μ νμΌλ‘ 2 x 3μ νμΌμ μ±μΈ μ μλ κ²½μ°μ μλ₯Ό ꡬν΄μΌ ν¨
- μ€λ₯Έμͺ½ λμ 2 x 1 νμΌμ΄ μΈμμ Έ μλ κ²½μ°μ, λμ μλ κ²½μ°λ₯Ό μκ°ν΄λ³΄μμ λ, μΈμμ Έ μλ κ²½μ°λ μμ 2κ°μ 2 x 1 νμΌλ μΈμμ Έ μμ΄μΌ νλ κ²½μ°μ μμ 2κ°μ 2 x 1 νμΌμ΄ μΈ΅μΌλ‘ λλμ΄μ Έ μλ κ²½μ°μ λλ¨Έμ§ 2 x 1 νμΌμ 1κ° μΈμ°λ κ²½μ°λ‘ λ³Ό μ μμΌλ―λ‘ μ¦, 2 x 2μ νμΌμ μ±μμΌ νλ κ²½μ°μ μμ κ°μ
- λμμ Έ μλ κ²½μ°λ νΌμ λμμ Έ μμ μ μμΌλ―λ‘ 2κ°κ° μΈ΅μΌλ‘ λλμ΄μ Έ μκ³ , μμ 2 x 1 νμΌ 1κ°κ° μΈμμ Έ μμ μ λ°μ μμ μ¦, 2 x 1μ νμΌμ μ±μμΌ νλ κ²½μ°μ μμ κ°μ
- λ°λΌμ μ κ²½μ°μ μλ₯Ό λͺ¨λ λν κ°μ΄ 2 x 3μ μ±μΈ μ μλ λͺ¨λ κ²½μ°μ μμμ μ μ μκ³ , 2 x 2, 2 x 1μ νμΌμ μ±μμΌ νλ κ²½μ°μ μμ ν©μ΄λ―λ‘ μ νμ μΈ λμ κ³νλ²μ΄λ©° νΌλ³΄λμΉ μμ΄μμ μ μ μμ
5. μ 체 μ½λ
//MARK: - μ§μ¬κ°νλ°°μΉμκ²½μ°μμ
//MARK: - Framework
import Foundation
//MARK: - Function
func solution() -> Void {
//MARK: - Input
guard let N: Int = Int(readLine() ?? "0") else { return }
let baseCondition: Int = 2
var T: [Int] = Array(repeating: 0, count: N + 10)
//MARK: - Process
//1. λΆλΆ λ¬Έμ λ₯Ό μ μνλ€.
//T[i] = 2 x 1 λͺ¨μμ νμΌλ‘ 2 x i ν¬κΈ°μ νμΌμ μ±μΈ μ μλ λͺ¨λ κ²½μ°μ μ
//2. μ νμμ μΈμ΄λ€.
//T[i] = T[i - 1] + T[i - 2] -> νΌλ³΄λμΉ μμ΄
for i in 1...baseCondition {
T[i] = i
}
for i in stride(from: baseCondition + 1, through: N, by: 1) {
T[i] = (T[i - 1] + T[i - 2]) % 1000007
}
//MARK: - Output
print(T[N])
}
solution()
μ 체μ½λλ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
'Swift Data Structure And Algorithm > Dynamic Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μμ μ±μ·¨ (0) | 2022.04.12 |
---|---|
μ κ³±μμ ν© (0) | 2022.04.08 |
λ²νΌ λλ₯΄κΈ° (0) | 2022.04.08 |
μΉ΄λ λμ΄ (0) | 2022.04.08 |
κ΅¬μ¬ κ²μ (0) | 2022.04.08 |