문제)
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
제한사항)
1 ≤ a ≤ 100
1 ≤ d ≤ 100
1 ≤ included의 길이 ≤ 100
included에는 true가 적어도 하나 존재


나의 풀이)
function solution(a, d, included) {
const arr = [a];
for(let i = 1; i < included.length; i++){
arr[i] = arr[i - 1] + d;
}
return arr.reduce((acc, cur, idx) => included[idx] ? acc+cur : acc , 0)
}
풀이 설명)
function solution(a, d, included) {
const arr = [a]; // a(첫째항)를 배열로 생성
for(let i = 1; i < included.length; i++){
arr[i] = arr[i - 1] + d;
} // for 반복문으로 arr 배열을 등차가 d인 등차수열 형태로 만들어 줌
return arr.reduce((acc, cur, idx) => included[idx] ? acc+cur : acc , 0)
// 예제 1만 살펴보면, reduce 함수를 통해 acc를 0부터 시작하여
true- acc : 0, curr : 3
false- acc : 3, curr : 7
false- acc : 3, curr : 11
true- acc : 3, curr : 15
true- acc : 18, curr : 19
마지막 값은 true기 때문에 acc+cur 값인 37이 return 됨
}