정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
function solution(n) {
let answer = 0;
for (let i=1; i<n+1; i++) {
if (n%i === 0) {
answer += i;
}
}
return answer;
}
for문으로 간단하게 해결!
function solution(n) {
let answer = [];
for (let i=1; i<n+1; i++) {
if (n%i === 0) {
answer.push(i)
}
}
return answer.reduce((a,c) => a+c, 0);
}
사실 처음에 배열을 만든 다음에 배열 안의 값을 다 더해주려고 했었는데 테스트 중 런타임 에러가 나왔었다. 왜 그런지 찾아봤더니 reduce는 빈 배열일 때 호출하면 에러가 나와서 initialValue를 꼭 설정해줘야 한다. 런타임 에러가 나왔던 테스트는 정수 n이 0이었던 거 같다.