programmers/level1

[level1] - 약수의 합

태기의삶 2020. 7. 25. 13:55

 

 

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

문제 설명 :

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

 

입출력 예

n return
12 28
5 6

 

접근 방법 :

이 문제는 약수를 구해서 모두 더한 값을 반환하면 되는 아주 간단한 알고리즘 문제이다.

약수란?

어떤 수를 나누었을 때 나머지가 0인 수를 말한다.

주어진 수 N이 있으면 1부터 N까지의 수를 하나씩 나눴을 때, 나머지가 0이면 그것이 약수인 것이다.

필자는 약수를 구하기 위해 반복문을 통해서 나누는 수의 조건을 1 <= N까지로 잡았고, 반복문이 돌면서 순서대로 N을 1부터 N까지 나눈다.

N / 1~N까지 나눌 때, 나머지가 0이면 그 수는 약수이기 때문에 해당 수를 answer에 더한다.

결과적으로 반복문이 모두 완료가 되면, 약수를 모두 더한 값이 반환된다. 

 

내가 짠 코드 :

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