728x90
https://www.acmicpc.net/problem/11659
ν΄λΉ λ¬Έμ λ₯Ό νλ©΄μ λμ ν©μ μ²μ μ νλ€.
λ¬Έμ λ₯Ό λ³΄κ³ κ°μ κ³μ°ν΄μ μ μ₯ν΄μ κΊΌλ΄μ μ¬μ©νλ©΄ λ κ² κ°λ€λ μκ°μ λ€μλλ°, μ νν ν΄κ²°λ°©λ²μ΄ λμ ν©!μΈμ§λ λͺ°λλ€..!
λμ ν©μ λν΄ μμ보μ!
λμ ν©
νΉμ ꡬκ°μ ν©μ μ°Ύλλ° μ μ©ν μκ³ λ¦¬μ¦
λμ ν© μκ³ λ¦¬μ¦μ μ°μλ μμλ€μ ν©μ λΉ λ₯΄κ² κ³μ°νλ μκ³ λ¦¬μ¦μ λλ€. λ°°μ΄κ³Ό κ°μ μνμ€ λ°μ΄ν°μμ μΌλΆ ꡬκ°μ ν©μ μ°Ύλ λ° μ¬μ©λ©λλ€. μ΄ μκ³ λ¦¬μ¦μ μ 체 λ°°μ΄μ λ°λ³΅ν΄μ λ§μ μ μννλ λ°©μλ³΄λ€ λΉ λ₯Έ κ³μ°μ κ°λ₯νκ² ν©λλ€.
λμ ν© μκ³ λ¦¬μ¦ μλ λ°©μ
- λμ λ°°μ΄ μμ±: μλμ λ°°μ΄κ³Ό κ°μ κΈΈμ΄λ₯Ό κ°λ λ°°μ΄μ λ§λλλ€. μ΄ λ°°μ΄μ κ° μΈλ±μ€λ μλ λ°°μ΄μ μΈλ±μ€κΉμ§μ ν©μ μ μ₯ν©λλ€.
- λμ λ°°μ΄ κ° κ°±μ : λμ λ°°μ΄μ ꡬμ±ν λ, κ° μμλ ν΄λΉ μΈλ±μ€κΉμ§μ ν©μ λνλ λλ€. μλ₯Ό λ€μ΄, λμ λ°°μ΄μ iλ²μ§Έ νλͺ©μ μλ λ°°μ΄μ 0λ²μ§ΈλΆν° iλ²μ§ΈκΉμ§μ ν©μ λνλ λλ€.
- νΉμ κ΅¬κ° ν© κ³μ°: ꡬκ°[i, j]μ ν©μ λμ ν©[j]μμ λμ ν©[i-1]μ λΉΌλ©΄ μ½κ² ꡬν μ μμ΅λλ€. μ΄λ‘μ¨, λ°°μ΄μ νΉμ ꡬκ°μ ν©μ κ³μ°νλ λ° μκ° λ³΅μ‘λ O(1)μ ꡬν μ μμ΅λλ€.
func calculatePrefixSum(_ arr: [Int]) -> [Int] {
var prefixSum = [Int](repeating: 0, count: arr.count)
// 첫 λ²μ§Έ μμλ μκΈ° μμ μ΄λ―λ‘ μλ λ°°μ΄μ 첫 λ²μ§Έ κ°μΌλ‘ μ΄κΈ°ν
prefixSum[0] = arr[0]
// λμ ν© λ°°μ΄ κ΅¬μ±
for i in 1..<arr.count {
prefixSum[i] = prefixSum[i - 1] + arr[i]
}
return prefixSum
}
func cal(_ start: Int, _ end: Int) -> Int {
if start == end { return arr[start] }
if start == 0 { return prefixSumArray[end] }
return prefixSumArray[end] - prefixSumArray[start-1]
}
// μμ λ°°μ΄
let arr = [3, 1, 7, 5, 2, 4]
// λμ ν© κ³μ°
let prefixSumArray = calculatePrefixSum(arr)
print("λμ ν© λ°°μ΄: \(prefixSumArray)")
// κ΅¬κ° μΈλ±μ€[2, 4]μ ν©
let result = cal(2, 4) // μΈλ±μ€μ μ μ
728x90
'π Algorithm > μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μκ³ λ¦¬μ¦] 03. μμ΄κ³Ό μ‘°ν©, κ·Έλ¦¬κ³ μ¬κ· with Swift (1) | 2024.02.06 |
---|---|
[μκ³ λ¦¬μ¦] 02. BFSμ DFS μκ³ λ¦¬μ¦μ λΌλ with Swift (1) | 2023.12.28 |