본문 바로가기
배움 기록/코테 연습

[프로그래머스] 등차수열의 특정한 항만 더하기 : JavaScript

by dygreen 2024. 6. 23.

📌 문제

 

📌 풀이

function solution(a, d, included) {
    var answer = 0;
    
    let addedDataList = [];
    let trueDataIndexList = [];
    let finalDataList = [];
    
    // 1. included 의 length 만큼 더한 등차수열을 List 에 넣는다.
    for (let i = 0; i < included.length; i++) {
        addedDataList.push(a + (d * i));    
    }
    
    // 2. included 에서 true 인 값의 index 를 List 에 넣는다.
    included.map((ele, idx) => {
        if (ele) {
            trueDataIndexList.push(idx)
        }
    })
    
    // 3. 1번의 List 에서 2번의 List 의 값(=index) 을 새로운 List 에 넣는다.
    trueDataIndexList.map((ele) => finalDataList.push(temp[ele]))
    
    // 4. 새로운 List 의 값들을 모두 더한 값을 answer 에 할당한다.
    answer = finalDataList.reduce((acc, curr) => acc + curr)
    
    return answer;
}
  • 함수를 작성하면서도 쓸데없는 변수 선언, 복잡한 반복문, 해석하기 어려운 코드 등이라고 느꼈다..

 

다른 풀이

function solution(a, d, included) {
    return included.reduce((acc, curr, i) => {
        return curr ? acc + a + d * i : acc
    }, 0)
}
  • reduce() : reduce 를 활용해 현재(curr) 값true 이면 초기값(0)a + d * i 를 더하고, false 이면 누적된 값(acc) 을 return 하는 식으로 동작한다.

다른 분들의 풀이를 보고 아직 많이 부족한 실력이라는 것을 또 다시 느꼈다..

reduce 를 활용하긴 했지만, 제대로 된 개념을 모르고 있었던 것 같다.. 언제쯤 잘 활용할 수 있을까😭

 

 

해당 풀이에 공감되는 댓글이 있어 첨부하고 이 게시글을 마무리 하겠다..

 

728x90

댓글