저장을 습관화

프로그래머스 LV.0 원소들의 곱과 합 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 원소들의 곱과 합

ctrs 2023. 9. 13. 21:42

프로그래머스 LV.0 원소들의 곱과 합

https://school.programmers.co.kr/learn/courses/30/lessons/181929

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

원소들의 곱과 합


2. 문제 설명

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


3. 제한 사항

- 2 ≤ num_list의 길이 ≤ 10

- 1 ≤ num_list의 원소 ≤ 9


4. 예시

num_list result
[3, 4, 5, 2, 1] 1
[5, 7, 8, 3] 0


5. 기본 제공 코드

function solution(num_list) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

const solution = (num_list) => {
  return num_list.reduce((a, b) => a * b, 1) >
    num_list.reduce((a, b) => a + b) ** 2
    ? 0
    : 1;
};

 

6-2. VSC에 작성한 내용

const solution = (num_list) => {
  // let first = num_list.reduce((a, b) => a * b, 1);
  // let second = num_list.reduce((a, b) => a + b);

  return num_list.reduce((a, b) => a * b, 1) >
    num_list.reduce((a, b) => a + b) ** 2
    ? 0
    : 1;
};

// 테스트
console.log(solution([3, 4, 5, 2, 1]));
console.log(solution([5, 7, 8, 3]));

// console.log(solution());


7. 특이사항

foreach로 시도하다가 이건 좀 아닌것 같아서

reduce 사용법을 다시 공부하고 풀었음


8. 다른 사람이 작성한 답

8-1. for of 문법

function solution(num_list) {
    let accMul = 1
    let accSum = 0
    for (const num of num_list) {
        accMul *= num
        accSum += num
    }
    return accMul < accSum ** 2 ? 1 : 0
}

 

8-2.

function solution(num_list) {
    let mul = num_list.reduce((a, c) => {return a*c ;}, 1);
    let sum = num_list.reduce((a, c) => {return a+c ;}, 0);
    return (mul < sum*sum) ? 1 : 0;
}