frontend/javaScript

[js / 알고리즘연습] 등차수열의 특정한 항만 더하기,

김포레스트 2024. 9. 12. 09:08

 

문제설명

 

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

 

 

풀이 과정

included 가 배열의 형태로 들어오니까 이 배열을 기준으로 forEach를 돌리면 되겠다....

고차배열 함수를 쓸 수는 없는걸까? 하는 고

 

 

 

나의 풀이

function solution(a, d, included) {
    var answer = 0;

    included.forEach((el, idx) => {
       if(el == true) answer += a + d*idx;
    });
    
    return answer;
}

 

 

 

best 풀이

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

 

 

 

아... 역시 reduce를 사용할 수 있는 방법이 있었군.... 

 

 

** reduce함수 살펴보기 

 

array.reduce((accumulator, currentValue, currentIndex, array) => {
    // 콜백 함수 내용
}, initialValue);

 

reduce는 총 네개의 파라미터를 사용할 수 있음.

 

  • accumulator (누산기): 이전 함수 호출의 반환값을 누적하는 변수입니다.
  • currentValue (현재 값): 현재 처리 중인 배열 요소입니다.
  • currentIndex (현재 인덱스): 현재 요소의 인덱스입니다.
  • array (배열 자체): reduce를 호출한 배열입니다.
  • initialValue (초기값): (선택적) 누산기의 초기값으로, 설정하지 않으면 배열의 첫 번째 요소가 사용됩니다.