요구능력
누적합
문제풀이
누적합의 구간의 합을 구할 수 있는지를 묻는 문제이다.
손으로 인덱스와 숫자를 적어놓고 k를 빼주면 원하는 갯수의 누적합을 구할 수 있다는걸 알게될것이다.
Int.max에 -1을 곱해준 이유는 최대값이 음수가 될 수 있는 경우를 고려해준것이다.
if i -k < -1인 경우는 구하려는 누적합의 갯수만큼 나오지 않기 때문에 처리해준것이고,
if i - k == -1인 경우는 맨처음부터 원하는 갯수인 k개만큼 나오기에 구해둔 누적합만 불러온것이다.
후기
최대값이 음수가 될 수 있다는점을 잘 고려하자.
코드
import Foundation
let nk = readLine()!.split(separator: " ").map{Int(String($0))!}
let n = nk[0]
let k = nk[1]
var arr = readLine()!.split(separator: " ").map{Int(String($0))!}
var preFix = Array(repeating: 0, count: arr.count)
preFix[0] = arr[0]
for i in stride(from: 1, to: arr.count, by: 1){
preFix[i] += (arr[i] + preFix[i - 1])
}
var result = Int.max * -1
for i in 0..<preFix.count{
var sum = 0
if i - k < -1 {continue}
if i - k == -1{
sum = preFix[i]
}else{
sum = preFix[i] - preFix[i - k]
}
// print(sum)
result = max(result, sum)
}
print(result)
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
[Swift][누적합] 백준 10986번 (나머지 합) (2) | 2022.05.30 |
---|---|
[Swift][누적합] 백준 16139번 (인간 - 컴퓨터 상호작용) (0) | 2022.05.30 |
[Swift][누적합] 백준 11659번 (구간 합 구하기4) (0) | 2022.05.30 |
[Swift][우선순위 큐] 백준 1655번 (가운데를 말해요) (0) | 2022.05.27 |
[Swift][우선순위 큐] 백준 11286 (절댓값 힙) (0) | 2022.05.27 |
댓글