[프로그래머스] - LV1. 약수의 합(JAVA)

개발자·2022년 9월 22일
0
post-thumbnail

LV1. 약수의 합(JAVA)


문제 설명

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


제한 사항

  • n은 0 이상 3000이하인 정수입니다.
입출력
nreturn
1228
56

입출력 예 설명

입출력 예 #1

  • 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2

  • 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

내가 작성한 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 1; i <= n; i++){
            answer = n % i == 0 ? (answer+=i) : (answer+=0);
        }
        return answer;
    }
}
  • 주어진 정수 n과 0으로 딱맞게 나누어 떨어지는 숫자들은 정수 n의 약수이다. 물론 정수 n 본인도 포함.
  • 그렇기 때문에 1부터 정수 n까지 loop for를 돌리다가 0으로 나누어 떨어지는 정수가 있으면 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;
    }
}
  • 정수 n의 모든 약수의 경우에는 정수 n의 제곱근까지만 약수가 존재하기 때문에 loop for의 범위를 정수 n까지 모두 돌려줄 필요가 없다고 한다.
  • 정수 n의 제곱근 범위까지 돌려서 합한 값에 본인 값인 정수 n을 더하면 모든 약수의 합이 나온다.
profile
I DEVELOP THEREFORE, I AM 😄

0개의 댓글