[Javascript 코딩테스트][프로그래머스 Lv.0] 등차수열의 특정한 항만 더하기

uddi·2023년 9월 12일
0

📌 문제

등차수열의 특정한 항만 더하기

🔑 풀이

  • 반복문을 통해 included 값이 true인 인덱스(i)를 공차에 곱하여 등차수열의 값을 구한다
  • 구한 값을 모두 더한다

💻 코드

function solution(a, d, included) {
    var answer = 0;
    for (i=0; i<included.length; i++){
        console.log(included[i] && (answer+=a+d*i))
    }
    return answer;
}

💡 다른 사람의 풀이

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

다른 사람의 풀이를 보니 왜 이생각을 못했을까 싶더라는 ,,

📖 사용한 문법 정리

💡 reduce( )

reduce( ) : 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환

형태

arr.reduce(callback[, initialValue])

파라미터

callback 함수는 네개의 인수를 받는다

  • 첫번째 파라미터 : 누산기 (acc)
    👉 콜백의 반환값을 누적

    initialValue를 제공한 경우 : initialValue 값을 가짐
    제공하지 않은 경우 : 배열의 첫번째 값 (index 0)을 가짐

  • 두번째 파라미터 : 현재 값 (cur)

    initialValue를 제공한 경우 : 배열의 첫 번째 값
    제공하지 않은 경우 : 배열의 두 번째 값

  • 세번째 파라미터 : 현재 인덱스 (idx) (optional)

    initialValue를 제공한 경우 : 0부터 시작
    제공하지 않은 경우 : 1부터 시작

  • 네번째 파라미터 : 원본 배열 (src) (optional)

  • initialValue (optional)
    👉 callback의 최초 호출에서 첫 번째 인수에 제공하는 값

⚠️ 주의할점

빈 배열에서 초기값 없이 reduce( )를 호출하면 오류가 발생하니 초기값을 주던지, 빈 배열을 넣지 않던지 해야 한다

profile
거북이는 느리지만 결국 결승선을 통과한다

0개의 댓글