코딩 테스트 공부

프로그래머스 자바스크립트 코딩 기초 트레이닝 - 원소들의 곱과 합

dev_in 2025. 12. 4. 16:04

문제

 

정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

 

제한사항

2 =< num_list의 길이 =< 10

1 =< num_list의 원소 =< 9

고민한 점

 

어떻게 배열 속의 요소들을 꺼내서 계산할지 고민했습니다. 자주 쓰던 for문을 생각해봤지만 지정된 문법으로 코드를 좀 더 간략하고 보고 이해하기 쉽게 적어보고 싶었습니다.

 

해결 과정

ruduce()

function solution(num_list) {
    const sumOfTime = num_list.reduce((accumulator, currentValue) => accumulator * currentValue, 1);
    const sumOfList = num_list.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
    const sumOfSquare = sumOfList**2
    result = sumOfTime < sumOfSquare ? 1 : 0;
    return result;
}

accumulator는 누적값, currentValue는 현재 처리할 요소를 의미합니다.

계산식 내부의 1과 0은 초기값을 의미합니다.

제곱 연산자를 안쓰고 그냥 (매개변수)*(매개변수) 형식으로 작성했었는데 찾아보니 ** 문법을 통해 몇 제곱인지 편하게 작성할 수 있었습니다.

마지막 비교는 간단하게 삼항 연산자로 표기했습니다.

최종 결과 및 느낀 점

for문에 비해 코드가 간견해지고 상수화 하여 나중에 재활용할 수도 있는 구조로 만들어 결과물이 마음에 들었습니다.