정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
public class Solution
{
public int solution(int n)
{
int answer = 0;
// i가 1부터 n/2값이 될때까지 증가시키면서 for문 반복
for (int i = 1; i <= n/2; i++)
{
if (n % i == 0)
{
// 나눠떨어지면 약수이므로 곧장 answer에 더해줌
answer += i;
}
}
// 마지막으로 자기자신 n을 더해주면서 리턴한다.
return answer + n;
}
}
1. 메소드 시그니처
public int solution(int n)
이 함수는 정수 n을 매개변수로 받아들이고, 정수형 값을 반환
2. 변수 초기화
int answer = 0;
변수 answer는 약수의 합을 저장하는 변수로, 초기값은 0으로 설정
3. for 루프
for (int i = 1; i <= n/2; i++)
1부터 n/2까지의 값을 순회하는 반복문입니다. 이 범위를 n/2로 설정한 이유는 n의 약수 중 가장 큰 값이 n/2 이기 때문임. 더 큰 약수는 반복해서 더할 필요가 없음!
4.약수 확인
if (n % i == 0)
현재의 i 값이 n의 약수인지 확인. 즉, n을 i로 나누었을 때 나머지가 0이면 i는 n의 약수
5. 약수 덧셈
answer += i;
i가 n의 약수인 경우, answer에 i를 더한다.
6. 최종 결과 반환
return answer + n;
for 루프를 통해 계산된 약수의 합에 자기 자신인 n을 더한 값을 반환.