목차
반응형
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- n은 0 이상 3000이하인 정수입니다.
나의 풀이
function solution(n) {
var answer = [];
for(let i=0; i<=n; i++){
if(n%i===0){
answer.push(i);
}
}
var sum = answer.reduce((a,b) => a + b, 0);
return sum;
}
다른 풀이
function solution(num) {
let sum = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) sum += i
}
return sum
}
function solution(n, a=0, b=0) {
return n<=a/2?b:solution(n,a+1,b+=n%a?0:a);
}
마무리
약수를 구해서 모든 약수의 합을 구하는 문제였다.
약수는 어떤 자연수를 나누어떨어지게 하는 수이다. 어떤 수의 약수에는 1과 자기 자신이 항상 포함된다.
자연수를 나누어 떨어지게 하는 조건은 어떤 수로 나누었을 때 나머지가 0이 되면 된다.
빈 배열을 만들고, for문을 돌려 주어진 입력 값 보다 작은 수를 한 개 씩 증가 시켜 입력 값의 약수를 빈 배열에 push로 배열에 추가한다.
그리고 배열의 모든 값을 각각 더해서 반환했다.
다른 사람의 풀이를 봤는데 굳이 배열을 사용하지 않고 숫자로만 계산해서 반환하는 방법도 있었다.
반응형