문제
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
2 =< num_list의 길이 =< 10
1 =< num_list의 원소 =< 9
고민한 점
어떻게 배열 속의 요소들을 꺼내서 계산할지 고민했습니다. 자주 쓰던 for문을 생각해봤지만 지정된 문법으로 코드를 좀 더 간략하고 보고 이해하기 쉽게 적어보고 싶었습니다.
해결 과정
ruduce()
function solution(num_list) {
const sumOfTime = num_list.reduce((accumulator, currentValue) => accumulator * currentValue, 1);
const sumOfList = num_list.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
const sumOfSquare = sumOfList**2
result = sumOfTime < sumOfSquare ? 1 : 0;
return result;
}
accumulator는 누적값, currentValue는 현재 처리할 요소를 의미합니다.
계산식 내부의 1과 0은 초기값을 의미합니다.
제곱 연산자를 안쓰고 그냥 (매개변수)*(매개변수) 형식으로 작성했었는데 찾아보니 ** 문법을 통해 몇 제곱인지 편하게 작성할 수 있었습니다.
마지막 비교는 간단하게 삼항 연산자로 표기했습니다.
최종 결과 및 느낀 점
for문에 비해 코드가 간견해지고 상수화 하여 나중에 재활용할 수도 있는 구조로 만들어 결과물이 마음에 들었습니다.
'코딩 테스트 공부' 카테고리의 다른 글
| 프로그래머스 자바스크립트 코딩 기초 트레이닝 - 배열 만들기4 (0) | 2025.12.09 |
|---|---|
| 프로그래머스 자바스크립트 코딩 기초 트레이닝 - 배열 만들기2 (0) | 2025.12.08 |
| 프로그래머스 자바스크립트 코딩 기초 트레이닝 - 문자열 곱하기 (0) | 2025.10.29 |
| 프로그래머스 자바스크립트 코딩 기초 트레이닝 - 문자열 섞기 (0) | 2025.10.29 |
| 프로그래머스 자바스크립트 코딩 기초 트레이닝 - 문자열 겹쳐쓰기 (0) | 2025.10.28 |