찰리의 이야기

Javascript 약수의 합 본문

카테고리 없음

Javascript 약수의 합

쨜리 2021. 9. 15. 13:10
반응형

Javascript 약수의 합

 

 

문제 : 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

n / return

12 28
5 6

 

주어진 코드  

function solution(n) {
    var answer = 0;
    return answer;
}

약수를 알기 위해서는 1부터 정수까지의 모든 자연수들을 나누어서 

나머지가 0인 수들이 약수이고,

나머지가 남는 수들은 약수가 아니라는 것에서 출발했습니다.

 

확실히, 개념에 대한 이해가 확실하다면,

코드로 구현하는 것이 훨씬 명확해지는 것 같습니다.

 

function solution(n) {
    var answer = 0;
    for(let i=0; i<=n; i++){
        if(n % i === 0){
            answer = answer + i;
        }
    }
    return answer;
}

 

여기까지가 제 풀이 방법이고,

다른 풀이법도 살펴보았습니다.

function solution(n, a=0, b=0) {
    return n <= a/2 ? b : solution(n, a+1, b+=n%a ? 0 : a);
}

삼항연산을 중복해서 사용하는데 재귀적으로 사용했습니다. 

그런데 상당히 복잡해서 가독성이 떨어질 뿐아니라,

연산 속도도 높게 나오는 것 같습니다.

 

코드가 항상 짧은 것이 최고인가 하면,

항상 그렇지는 않은 것 같습니다.

 

동료가 읽기 좋은 가독성 좋은 코드와,
연산이 간단한 코드가 좋은 코드인 것 같다는 생각입니다.

 

Javascript 약수의 합

반응형
Comments