문제
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한사항
- n은 0 이상 3000 이하인 정수입니다.
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1; i <= Math.sqrt(n); i++) {
if(n % i == 0 && Math.pow(i, 2) != n) {
answer += i;
answer += n / i;
}
else if(Math.pow(i, 2) == n) {
answer += i;
}
}
return answer;
}
}
소수 찾는 방법을 잘 응용하면 해결할 수 있다.
다만 16처럼 4 × 4 경우를 잘 생각해야만 한다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/12928