[Lv.0] 길이에 따른 연산

woodstock·2023년 11월 29일
0

코딩테스트

목록 보기
13/56
post-thumbnail

길이에 따른 연산

문제설명

정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성하는 문제이다.

조건문과 reduce 메서드의 활용

풀이

풀이 1.

function solution(num_list) {
    let answer = (num_list.length > 10) ? 0 : 1;
    for(let i = 0; i < num_list.length; i++) {
        if(num_list.length > 10) {
            answer+= num_list[i];
        } else {
            answer*= num_list[i];
        }
    }
    return answer;
}
  • 반복문을 사용하여 조건에 따라 누적값을 합산 또는 곱셈으로 업데이트하는 명확한 로직을 제공한다.

풀이 2.

function solution(num_list) {
    const add = (accumulator, currentValue) => accumulator + currentValue;
    const mult = (accumulator, currentValue) => accumulator * currentValue;
    
    return num_list.length > 10
    ? num_list.reduce(add, 0)
    : num_list.reduce(mult, 1);
}
  • reduce 메서드를 사용하여 간결하고 효율적인 코드로 문제를 해결하며, 명시적인 콜백 함수로 합산과 곱셈의 로직을 깔끔하게 분리한다.

풀이 3.

const solution = list => list.reduce((acc, v) => list.length > 10 ? acc + v : acc * v)
  • 매우 간결한 화살표 함수와 reduce를 사용하여 한 줄로 코드를 구현하지만, 각 요소 처리 시 배열의 길이를 반복적으로 확인하는 비효율성이 있다.
profile
해내는 사람

0개의 댓글