class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i*i<=n;i++) {
if(i*i==n) {
answer+=i;
} else if(n%i==0) {
answer+=i;
answer+=n/i;
}
}
return answer;
}
}
이제는 익숙해진 제곱근을 이용하여 약수를 구한 뒤, 그것을 더해줬다.
class SumDivisor {
public int sumDivisor(int num) {
int answer = 0;
for(int i =1 ; i<=num/2;i++){
if(num%i==0){
answer+=i;
}
}
return answer+num;
}
}
이분은 제곱근이 아닌, 절반까지 루프를 돌렸다.
절반보다는 제곱근이 시간복잡도 측면에서 더 우수하다고 볼 수 있겠다.