프로그래머스

[프로그래머스_Level1] 약수의 합

빙수빈수 2021. 7. 13. 15:36

https://programmers.co.kr/learn/courses/30/lessons/12928

 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

[문제]

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

 

[제한 조건]

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

 

[코드]

class Solution {
public int solution(int n) {
        int answer=0;
        
        /*
         * n과 나누면 나머지가 0인 값들을 n의 약수라고 한다.
         * 약수는 1~n 사이의 값들만 가능하므로 1~n 사이의 값들을 순차탐색으로 검사하여
         * 나눠 나머지가 0인 값들을 더한 누적 합을 구해준다.
         */
        for(int i=1;i<=n;i++) {
        	if(n%i==0)
        		answer+=i;
        }
        return answer;
    }
 }


[고찰]

주어지는 n은 3000이하의 정수이기 때문에 순차탐색으로 1~n까지의 값을 모두 검사 가능했다. 범위내의 값들 중 n과 나눠 나머지가 0인 값들을 더한 누적합을 return 하면 정답 처리되는 간단한 문제였다.