문제 링크 : 약수의 합
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
public int solution(int n) {
int answer = 0;
for(int i = 1; i <= n; i++){
if(n % i == 0){
answer += i;
}
}
return answer;
}
간단한 문제이다. 1부터 n까지 반복문을 돌면서 나누어 떨어지는 수를 더해서 반환한다.
다른 사람들의 풀이를 보니 n까지 도는 것이 아니라 n/2까지만 반복하고, 마지막에 n을 더해주는 방식으로 반복문의 횟수를 줄인다. - 약수가 2가 포함되어 있으면 n을 제외한 가장 큰 약수는 n/2이고, 3, 4로 갈수록 더 작아지기 때문