[TIL_22] C# 코드카타 약수의 합

H·2024년 1월 25일
0

약수의 합

문제 설명

정수 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을 더한 값을 반환.

profile
IT 서비스 구현 및 게임에 관심이 많습니다.

0개의 댓글