Skip to content

Sliding window #4

@Jinsujin

Description

@Jinsujin

길이가 정해진 윈도우를 만들어서, 옆으로 한칸 밀면서 연산해 가는 것

예) 연속된 N 일 동안 최대 매출 기록 구하기

  1. 미리 arr[0] ~ arr[2] 의 값을 구해둔다.
  2. for [3] 부터 배열의 끝까지 돈다
    • [0] 의 값을 빼고, 현재 값인 [i] 를 더한다
    • 전체합 + arr[i]
    • 전체합 - arr[i-K]
 func solution(_ input: [Int], K: Int) -> Int {
    var answer = Array(input[0..<K]).reduce(0, +)
		var sum = answer
    
    for i in K..<input.count {
        sum += input[i] - input[i-K]
        answer = max(answer, sum)
    }
    return answer
}
// 56
solution([12, 15, 11 ,20, 25, 10, 20, 19, 13, 15], K: 3)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions