프로그래머스 - 약수의 합
정수 n의 약수를 모두 더한 값을 구하는 문제이다.
[나의 풀이]
class Solution {
public int solution(int n) {
int sum = 0;
for(int i=1; i<=n; i++) {
if(n % i == 0) sum += i;
}
return sum;
}
}
- for문을 사용해서 1부터 n까지의 숫자를 반복하여 n의 약수인지 확인한다.
- 약수는 자연수이므로 for문 i의 초기값은 1로 세팅한다.
- for문을 수행할 때마다 n을 i로 나눴을 때 나머지가 0이면 변수 sum 에 누적합산한다.
[참고]
약수 구하는 방법
- 1부터 n까지 숫자를 나눠서 0인지 판별
- 약수는 n을 제외하고 n/2보다 클 수 없기 때문에 n/2까지만 판별
- 제곱근 사용하기
- 2번의 방법처럼 n의 제곱근까지의 약수는 n의 약수 절반의 개수이다.
- n의 제곱근까지 판별하면 된다.