Swift Data Structure And Algorithm/Dynamic Programming
μ°μ λΆλΆ μ΅λν© L
youngjaeLee1026
2022. 4. 12. 17:36
1. λ¬Έμ
2. μ μΆλ ₯
3. μ μΆλ ₯ μμ
4. λ¬Έμ μ€κ³
- μ λ¬Έμ λ μμ νμ, λΆν μ λ³΅λ² λ±μΌλ‘ ν΄κ²°ν μ μμ§λ§, λ¬Έμ μ ν¬κΈ°κ° 1,000,000 μ΄λ―λ‘ μ‘°κΈ λ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ€κ³ν΄μΌ ν¨
- λ°λΌμ κ° μμλ₯Ό ν¬ν¨νλ(μ€λ₯Έμͺ½ λμΌλ‘ μκ°) μ°μ λΆλΆ μ€ μ΅λκ°μ μ μ₯ν΄ λκ°λ©΄μ λ§μ§λ§ μμκΉμ§ μ΄λ₯Ό κ²°μ νκ³ ,
- ν΄λΉ κ°λ€μ΄ μ μ₯λμ΄μλ λ°°μ΄μ μ΅λκ°μ μ°ΎμμΌλ‘μ¨ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
- μ¬κΈ°μ μ£Όμν΄μΌν μ μ, κ°μ₯ λμ μλ μμκ° μ΅λκ°μ΄λΌκ³ μκ°νκΈ° μ¬μ΄λ°, μ΄λ λ€μ μλ μμκ° μμκ° λμ¬ κ²½μ° λ μμμ§ μ μλ μν©μ΄ λ°μν μ μμΌλ―λ‘, κ° μμλ₯Ό λμΌλ‘νλ μ°μ λΆλΆ μ€ μ΅λκ°μ κ°κ° ꡬν΄λκ³ κ·Έ μ€μ μ΅λκ°μ μ νν΄μΌ μμ΄μ μ°μ λΆλΆ μ΅λν©μ ꡬν μ μμ
- λ°λΌμ, T[i] = iλ₯Ό ν¬ν¨νλ(μ€λ₯Έμͺ½ λμΌλ‘ μκ°νλ) μ°μ λΆλΆ μ€ μ΅λκ°μ΄λ©°,
- T[i] = T[i] < T[i - 1] + T[i] ? T[i - 1] + T[i] : T[i] κ³Ό κ°μ μ νμμ μΈμΈ μ μκ³ , μ΅μ’ μ μΌλ‘ Max(T[0] ~ T[n - 1])μ ꡬν΄μΌ νλ―λ‘, O(n)μ μκ°λ³΅μ‘λλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ
5. μ 체 μ½λ
//MARK: - μ°μ λΆλΆ μ΅λν© L
//MARK: - Framework
import Foundation
//MARK: - Function
func solution() -> Void {
//MARK: - Input
guard let n: Int = Int(readLine() ?? "0") else { return }
guard let inputArray: [String] = readLine()?.components(separatedBy: " ") else { return }
let array: [Int] = inputArray.map { Int($0) ?? 0 }
var table: [Int] = Array(repeating: 0, count: n)
var result: Int = 0
//MARK: - Process
table[0] = array[0]
result = table[0]
for i in 1..<n {
table[i] = array[i] < table[i - 1] + array[i] ? table[i - 1] + array[i] : array[i]
}
for number in table {
result = result < number ? number : result
}
//MARK: - Output
print(result)
}
solution()
μ 체μ½λλ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.