Javascript/자바스크립트 문제

[Javascript : programmers] 등차수열의 특정한 항만 더하기 (Lv.0)

isfp_yykkng 2024. 8. 9. 15:27

[Javascript : programmers] 등차수열의 특정한 항만 더하기 (Lv.0)

문제

 

나의 정답 풀이

function solution(a, d, included) {
    return Array(included.length).fill(0).reduce((acc,cur,i)=> included[i] ? acc += cur+a+d*i : acc,0)
}

 

included 배열의 길이만큼의 배열을 만들어 첫항이 a이고 등차가 4인 배열을 만든다. 입출력 예 1을 본다면 [ 3, 7, 11, 15, 19 ] 의 5칸 배열이 될 것이다. 이 배열을 돌면서 같은 인덱스의 included 배열의 원소가 ture 이면 더하고 아니면 더하지 않는 reduce() 함수를 작성하여 합을 반환한다.

 

*나는 배열을 하나 더 만들어서 등차수열을 저장하고 그 배열을 이용했기 때문에 조금은 더 시간이 걸리는 코드일 수 있다.

 

다른 사람 풀이

function solution(a, d, included) {
    return included.reduce((acc, el, i) => el ? acc + a + i*d : acc, 0);
}

 

included 배열 길이만큼 동작이 일어나기 때문에 included 배열을 순회하면서 안의 원소가 true이면 a + i * d 만큼을 더해준 후 이 합을 반환하는 방법도 있다. 이 방법이 조금 더 보기 쉽고 시간도 단축되는 코드라고 생각이 된다.

 

코드 차이를 보시고 참고해보세요 ~