level 1. 약수의 합 (Javascript)

약수의 합

문제

어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요.
예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.

풀이 (본인)

1
2
3
4
5
6
7
8
9
10
11
function sumDivisor(inputNum) {
var sum = 0;
for(var num = 1; num<=inputNum; num++){
if(inputNum%num===0){
sum +=num;
}
}
return sum;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(sumDivisor(12)); // 28

풀이 (다른 사람)

1
2
3
4
5
6
7
8
9
10
11
12
13
function sumDivisor(num) {
let n = num;
let a = []
while(0 < num){
if(n % num === 0){
a.push(num)
}
num--
}
return a.reduce((a,b) => a+b);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(sumDivisor(12)); // 28

배운점

  • 배열의 요소로 담아 나중에 한번에 더하는 코드를 작성 할 수 있다는 것을 배웠다.

느낀점

  • 대부분의 사람들은 본인이 작성한 코드와 비슷하게 작성을 하였짐만 배열의 요소를 이용하여 코드를 작성 한 코드를 보았다.
  • 배열의 요소를 이용하게 되면 함수를 한번 더 사용해야 하므로 속도가 느려질것같다.(아마 문제에서 배열을 보여줘서 배열을 이용한 것 같다.)
  • 대부분의 사람들이 작성한 코드가 가장 빠른 속도를 갖는 코드인 것 같다.
공유하기