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

준영·2023년 9월 9일
0
post-thumbnail

문제 설명

두 정수 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가 적어도 하나 존재합니다.

입출력 예

abincludedresult
34[true, false, false, true, true]37
71[false, false, false, true, false, false, false]10

풀이

function solution(a, d, included) {
    let newArr = [];
    let result = 0;
    
    // 초깃값 a이고 idx가 d씩 커지며, boolean 값을 가진 형태의 객체 배열(newArr)을 생성
    for(let i = 0; i < included.length; i++){
        newArr.push({value: a + (d * i), boolean: included[i]})
    }
    
    // newArr에서 boolean 값이 true인 조건으로 필터하여 배열을 생성(filterArr)
    const filterArr = newArr.filter((e) => {
        return e.boolean == true;
    })
    
    // filterArr의 value 값을 전부 더하고, 답을 리턴
    for(let i = 0; i < filterArr.length; i++){
        result = result + filterArr[i].value;
    }
    
    return result;
}

느낀 점

수학은 포기한지 10년이 지나서, 등차수열의 특정한 항만 더하라는 말에 머리가 어질어질했다. 입출력 예를 보면서, 반복적인 부분을 찾고 이거겠지? 하면서 푼 결과 풀기는 했다. 그런데 인간적으로 이런 문제는 반칙이 아닌가 싶다.

profile
개인 이력, 포폴 관리 및 기술 블로그 사이트 👉 https://aimzero-web.vercel.app/

1개의 댓글

comment-user-thumbnail
2023년 9월 9일

reduce를 사용해서 풀어보시는 것도 좋을것 같아요

답글 달기