정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9
num_list result
[3, 4, 5, 2, 1] 1
[5, 7, 8, 3] 0
모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.
모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.
function solution(num_list) {
// 3 x 4 x 5 x 2 x 1 = 120, 15의 제곱은 225
let multiNum = num_list.reduce((acc, cur) => acc * cur);
console.log(multiNum);
// 5 x 7 x 8 x 3 = 840, 23의 제곱은 529
let squareNum = num_list.reduce((acc, cur) => acc + cur);
let dualNum = squareNum * squareNum;
console.log(dualNum);
if (dualNum > multiNum) {
return 1;
} else {
return 0;
}
// num_list 모든 원소들의 곱 < num_list 모든 원소들의 합의 제곱이면 1
// num_list 모든 원소들의 곱 > num_list 모든 원소들의 합의 제곱이면 0
// 모든 곱이 모든 제곱보다 작으면 1
// 모든 곱이 모든 제곱보다 크면 0
// return 작으면 1, 크면 0
// return answer;
}
해석
제곱인 multiNum을 reduce를 써서 acc로 누적 계산, cur로 요소들을 계산합니다.
즉 [3, 4, 5, 2, 1]을 acc로 누적해서 cur 개수 만큼 곱합니다.
(3 x 4 x 5 x 2 x 1) 그럼 모든 원소의 곱이 계산됩니다.
두번째로 제곱을 구해야 합니다. [3, 4, 5, 2, 1]을 acc + cur로 덧셈합니다.
따로 let을 담습니다. dualNum을 생성해 위의 덧셈한 값을 똑같이 곱합니다.
변수명이 multiNum이면 let dualNum = multiNum x multiNum으로 작업합니다.
제곱하여 결과를 받을 수 있습니다. 이제 조건에 따라 작동시키도록 합니다.
if (제곱 값 > 곱셈 값) 합의 제곱 값이 크면 return 1, 합의 제곱 값이 작으면 0으로 리턴합니다.
다른 사람의 풀이
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;
}
또 다른 사람의 풀이
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;
}
function solution(num_list) {
return Math.pow(num_list.reduce((a,b) => a+b), 2) > num_list.reduce((a,b) => a*b) ? 1 : 0;
}
function solution(num_list) {
let product = num_list.reduce((acc, i) => acc * i);
let sum = num_list.reduce((acc, i) => acc + i);
return product < sum * sum ? 1 : 0;
}
function solution(num_list) {
let mult = num_list.reduce((acc, val) => acc * val, 1);
let sumSQ = num_list.reduce((acc, val) => acc + val, 0) ** 2;
return mult > sumSQ ? 0 : 1;
}
저는 몇 수십줄을 썼는데 다들 간략하게 잘 작성하시네요