목차
목차
반응형
문제 설명
정수 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로 배열에 추가한다.
그리고 배열의 모든 값을 각각 더해서 반환했다.
다른 사람의 풀이를 봤는데 굳이 배열을 사용하지 않고 숫자로만 계산해서 반환하는 방법도 있었다.
반응형
반응형
문제 설명
정수 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로 배열에 추가한다.
그리고 배열의 모든 값을 각각 더해서 반환했다.
다른 사람의 풀이를 봤는데 굳이 배열을 사용하지 않고 숫자로만 계산해서 반환하는 방법도 있었다.
반응형