알고리즘/프로그래머스

[JAVA] 프로그래머스 Lv1. 약수의합

수진보배 2020. 10. 30. 17:32
728x90

<문제>

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

<제한 사항>

  • n은 0 이상 3000이하인 정수입니다.

<풀이>

 

class Solution {

    public int solution(int n) {

        int answer = 0;

 

        for(int i=1; i<=n; i++){           // n을 1부터 n까지의 수로 나눠보고 나머지가 0인 수들의 합을 구한다.

            if(n%i == 0){

                answer += i;

            }

        }

        return answer;

    }

}

 

 

 

===================== 다른 풀이 =============================

 

class SumDivisor {

    public int sumDivisor(int num) {

        int answer = 0;

        for(int i = 1; i <= num/2; i++){          // 약수를 구하는 것이기 때문에 n/2까지의 수로 나누어 약수를 구하고

                                                                                마지막에 자기자신을 더해줌.

            if(num%i == 0) answer += i;

        }

        return answer+num;

}

 

728x90