문제 설명
정수가 담긴 리스트 num_list
가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1
을 크면 0
을 return
하도록 solution
함수를 완성해주세요.
제한사항
- 2 ≤ num_list의 길이 ≤ 10
- 1 ≤ num_list의 원소 ≤ 9
1차 풀이
function solution(num_list) {
function sum(acc, cur) {
return acc + cur;
}
function multiply(acc, cur) {
return acc * cur;
}
const squaredSum = num_list.reduce(sum) ** 2;
const multiplied = num_list.reduce(multiply);
return Number(multiplied < squaredSum);
}
배열 메소드인 reduce
를 활용하여 해결하였다.
비교 연산 결과를 형변환하여 1
과 0
으로 출력되게 하였다.
2차 풀이
function solution(num_list) {
const { sum, mul } = num_list.reduce((acc, cur) => ({
sum: acc.sum + cur,
mul: acc.mul * cur
}), { sum: 0, mul: 1 });
return Number(mul < sum ** 2);
}
각 연산에 들어가는 reduce
를 한 번으로 줄이고 싶었는데 그러기 위해서 구조분해할당을 이용할 수 있었다.
728x90