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

Jinny·2025년 1월 10일
0
  • 날짜 / 주차-누적 횟수: 2025.01.08(수) / 2주차-13회
  • 사이트 이름: 프로그래머스
  • 사용 언어: 자바스크립트
  • 문제 고유 번호 및 레벨: 181931 / Lev 0
  • 나의 풀이 방법:
    function solution(a, d, included) {
        let seq = [];
        let result = 0;
        
        seq.push(a);
        for (let i of included) {
            seq.push(seq[seq.length -1] + d);
        }
        
        included.forEach((v, i) => {
            if (v) result += seq[i];
        })
        
        return result;
    }
    • 등차 수열을 만든다.
      • 첫 항을 push 하고, 나머지 항은 for of 문으로 순차적으로 push 한다.
    • forEach() 로 included를 순회하여 각 요소가 true면 반환한다.
  • 최적 풀이 방법:
    
    function solution(a, d, included) {
        return included.reduce((acc, flag, i) => {
            return flag ? acc + a + d * i : acc
        }, 0)
    }
    • included배열에 reduce함수를 활용한다.
      • accumaulator(acc): callback함수의 반환값 누적
      • currentValue(flag): 배열의 현재요소
      • index(i): 배열의 현재 요소 인덱스
    • 삼항연산자
      • 배열의 현재 요소가
        • true라면? → 누적값(처음 값은 0으로 초기화) + 첫째 항 + (공차 * 현재 인덱스)
        • false라면? → 초기값이 0이므로 0 더하기
  • 배운 개념:
    • reduce에 세 번째 인자는 현재 index로 활용 가능하다.
profile
세상을 이롭게 하는 프론트엔드 개발자 Jinny

0개의 댓글

관련 채용 정보