[JavaScript] Lv0 - 원소들의 곱과 합

Moon·2024년 12월 13일
0
post-thumbnail

원소들의 곱과 합

문제 설명

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


제한사항

  • 2 ≤ num_list의 길이 ≤ 10
  • 1 ≤ num_list의 원소 ≤ 9

입출력 예

num_listresult
[3, 4, 5, 2, 1]1
[5, 7, 8, 3]0

입출력 예 설명

입출력 예 #1

  • 모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.

입출력 예 #2

  • 모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.

function solution(num_list) {
    const sum = num_list.reduce((acc, cur) => acc + cur, 0);      // 모든 원소의 합
    const product = num_list.reduce((acc, cur) => acc * cur, 1);  // 모든 원소의 곱
    
    // 모든 원소의 곱이 합의 제곱보다 작으면 1, 아니면 0
    return product < sum ** 2 ? 1 : 0;
}

코드 설명

  1. 합 계산
    • reduce((acc, cur) => acc + cur, 0)를 사용해 num_list의 모든 원소를 더한 값을 sum에 저장합니다.
  2. 곱 계산
    • reduce((acc, cur) => acc * cur, 1)를 사용해 num_list의 모든 원소를 곱한 값을 product에 저장합니다.
  3. 조건 비교
    • 조건: "모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을, 크면 0을 반환"
    • product < sum ** 2를 통해 비교한 뒤, 조건에 따라 1 또는 0을 반환합니다.

추가 설명

reduce 메서드는 배열의 모든 요소를 순회하며 하나의 결과값으로 축약하는 데 사용됩니다. 사용 시 두 가지 인자를 받는데, 첫 번째 인자는 누적값(acc), 두 번째 인자는 현재 처리 중인 요소(cur)입니다. 또한 초기값을 두 번째 인자로 제공할 수 있습니다.

간단한 사용 예:

const arr = [1, 2, 3, 4];

// 모든 요소의 합을 구하는 예시
const sum = arr.reduce((acc, cur) => acc + cur, 0);
// 초기값을 0으로 설정했기 때문에 첫 번째 순회 시 acc = 0, cur = 1이 됩니다.
// 이후 acc에는 누적된 값이 저장되며, 마지막에는 모든 요소의 합이 저장됩니다.

// 모든 요소의 곱을 구하는 예시
const product = arr.reduce((acc, cur) => acc * cur, 1);
// 초기값을 1로 두어 곱셈 연산에 영향을 주지 않도록 합니다.

정리하자면, reduce는 배열을 순회하면서 acc에 결과를 축적해 나가며, 최종적으로 하나의 값(합계, 곱, 최대/최소 값, 객체나 맵으로 변환 등)을 만들어내는 강력한 메서드입니다.

profile
MOON.DEVLOG

0개의 댓글