프로그래머스 <등차수열의 특정한 항만 더하기>

이하은·2023년 12월 19일

문제)
두 정수 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가 적어도 하나 존재

나의 풀이)

function solution(a, d, included) {
        const arr = [a];  
    
        for(let i = 1; i < included.length; i++){
            arr[i] = arr[i - 1] + d;
        } 
        
    return arr.reduce((acc, cur, idx) => included[idx] ? acc+cur : acc , 0) 
}     

풀이 설명)

function solution(a, d, included) {
        const arr = [a];  // a(첫째항)를 배열로 생성
    
        for(let i = 1; i < included.length; i++){
            arr[i] = arr[i - 1] + d;
        } // for 반복문으로 arr 배열을 등차가 d인 등차수열 형태로 만들어 줌
        
    	return arr.reduce((acc, cur, idx) => included[idx] ? acc+cur : acc , 0) 
        
        // 예제 1만 살펴보면, reduce 함수를 통해 acc를 0부터 시작하여 
        	true- acc : 0, curr : 3
            false- acc : 3, curr : 7
            false- acc : 3, curr : 11
            true- acc : 3, curr : 15
            true- acc : 18, curr : 19
           마지막 값은 true기 때문에 acc+cur 값인 37이 return 됨
} 
profile
코(딩)린 벨로그

0개의 댓글