본문 바로가기
프로그래머스 코딩테스트 연습

[프로그래머스 코테 C#] Lv1. 약수의 합

by 노재두내 2024. 3. 17.

문제 설명

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

제한 사항
  • n은 0 이상 3000이하인 정수입니다.
입출력 예nreturn
12 28
5 6
입출력 예 설명

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

 


나의 풀이

public class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i=1;i<=n;i++)
        {
            if(n%i==0)
            {
                answer+=i;
            }
        }
        return answer;
    }
}

한방에 풀었음

나머지가 0이면 answer에 더하기

 


[다른사람 풀이]

using System.Collections.Generic;

public class Solution {
    public int solution(int n)
        {
            if (n == 0) return 0;
            if (n == 1) return 1;
            int answer = 0;
            List<int> divisor = new List<int>();

            //아무리 많이 가도 절반까지
            for (int i = 1; i < n / 2 + 1; i++) {
                if (divisor.Contains(i)) break;
                if (n % i == 0) {
                    int opposite = n / i;

                    divisor.Add(i);
                    if (opposite != i) {
                        divisor.Add(opposite);
                    }
                }
            }
            foreach (int i in divisor) {
                answer += i;
            }

            return answer;
        }
}

List에 값을 저장 + Contains를 이용해서 풀었다