백준문제풀이 9단계 약수,배수와 소수(3) 9506번 약수들의 합 (C#)

2024. 6. 21. 20:00백준 문제풀이/9단계 약수,배수와 소수

 

 

자신을 제외한 모든 약수들의 합이 자신과 같은 수를 완전수라고 하는데

완전수인지 아닌지를 판별하는 문제이다.

숫자를 계속 입력받고

완전수이면 (6 = 1 + 2 + 3)처럼 식을

완전수가 아니라면 n is NOT perfect.를 출력하는 문제이다.

-1을 입력받으면 종료다.

 

using System;
using System.Collections.Generic;

class BackJoon
{
    static void Main(string[] args)
    {
        int N;
        List<int> nums = new List<int>();
        while ((N = int.Parse(Console.ReadLine())) != -1)
        {
            nums.Clear();
            int count = 0;
            for (int i = 1; i < N; i++)
            {
                if(N%i == 0)
                {
                    count += i;
                    nums.Add(i);
                }
            }
            if (count == N)
            {
                Console.Write(N + " = ");
                for (int i = 0; i < nums.Count; i++)
                {
                    if(i < nums.Count-1)
                        Console.Write(nums[i] + " + ");
                    else
                        Console.WriteLine(nums[i]);
                }
            }
            else
                Console.WriteLine(N + " is NOT perfect.");
        }
    }
}

 

count와 List nums를 선언해주었다.

반복할때 마다 nums를 초기화 해준다.

i가 N의 약수라면 count를 증가시키고 nums에 Add해주자.

 

반복문이 끝나고 count가 N과 같다면 완전수 이므로

nums에 있는 원소들을 하나하나 +를 붙여서 출력해주자.

 

count가 N과 같지 않다면 완전수가 아니므로 N + is not perfect.를 출력해주자

 

List를 쓰고 for문을 두개나 써서 시간이 꽤나 소요될줄 알았는데

1등을 했다..? 운이 좋았던것같다. 다음으로 넘어가자.