본문 바로가기
코딩테스트/자바 Level 1

[Java] 약수의 합

by onggury 2023. 8. 1.

문제

정수 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