문제설명
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ num_list의 길이 ≤ 10
- 1 ≤ num_list의 원소 ≤ 9
입출력 예
입출력 예 #1
- 모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.
입출력 예 #2
- 모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.
소스코드&결과
function solution(num_list) {
var sum1 = 1, sum2 = 0;
for(var i of num_list){
sum1 *= i;
sum2 += i;
}
return sum1 > sum2**2 ? 0 : 1;
}
코드 설명
var sum1 = 1, sum2 = 0;
- 모든 원소의 곱 값을 넣어줄 sum1과 모든 원소의 합의 제곱 값을 넣어줄 sum2를 선언해주었다.
- sum1은 곱을 해야하므로 1로 선언해주었고, sum2를 합을 해줄 것이라 0으로 선언했다.
for(var i of num_list){
sum1 *= i;
sum2 += i;
}
- for of 반복문을 이용하여 요소 값을 꺼내주어 sum1에는 i만큼 곱해주었고, sum2에는 i만큼 더해주었다.
return sum1 > sum2**2 ? 0 : 1;
- sum1이 sum2의 제곱보다 크면 0을 리턴해주고, 작으면 1을 리턴해주도록 만들었다.
다른 사람이 짠 코드
function solution(num_list) {
return Math.pow(num_list.reduce((a,b) => a+b), 2) > num_list.reduce((a,b) => a*b) ? 1 : 0;
}
reduce() 함수는 배열의 요소들을 하나씩 돌면서, 이전 콜백의 리턴 값을 넘겨받아 작업을 수행하는 메서드이다.
위의 코드는 reduce함수를 이용하여 모든 원소의 합과 곱을 구해주었고, Math.pow함수를 이용하여 모든 원소의 합을 제곱해주었다.
reduce함수가 어떨 때 쓰이는지에 대해 알게 된 것 같다!
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JavaScript] 첫 번째로 나오는 음수 (0) | 2023.05.16 |
---|---|
[JAVA] 시저 암호 (0) | 2023.05.12 |
[JAVA] 예산 (0) | 2023.05.05 |
[JAVA] 이상한 문자 만들기 (0) | 2023.05.02 |
[JavaScript] 제곱수 판별하기 (0) | 2023.04.28 |