

import Foundation
func solution(_ a:Int, _ d:Int, _ included:[Bool]) -> Int {
var answer: Int = 0
for i in 1 ... included.count {
if included[i-1] == true {
answer += (d*(i-1) + a)
}
}
return answer
}

func solution(_ a: Int, _ d: Int, _ included: [Bool]) -> Int {
return included.indices.filter { included[$0] }.map { a + d * $0 }.reduce(0, +)
}
included.indices.filter { included[$0] })
위 코드가 included 배열에서 true인 인덱스만 추리는 코드이다.
고차함수 filter는 원하는 요소만 배열에서 추리는 함수이다.
included.indices.filter { included[$0] }).map { a + d * $0 }
map 고차함수를 이어서 작성하면 included에서 true인 인덱스가 $0에 들어가 included 배열은 a + d * $0인 요소들로 바뀐다.
included.indices.filter { included[$0] }).map { a + d * $0 }.reduce(0, +)
reduce 고차함수를 이어서 작성하면 초기값 0에 배열의 요소들을 모두 더해서 한개의 요소로 축소시킨다.