C#

백준 C# 9506 문제 풀이

psb08 2024. 10. 12. 00:30
728x90

문제 링크 : https://www.acmicpc.net/problem/9506

목차

1 설명

 

2 내 코드

 

3 문제 풀이 해석 내용

 

4 실행 결과

 

설명

백준 브론즈 1 문제 입니다.

 

 

내 코드

while (true)
{
    List<int> arr = new List<int>();
    StringBuilder sb = new StringBuilder();
    int n = int.Parse(Console.ReadLine());
    if (n == -1) break;
    for (int i = 1; i < n; i++)
    {
        if (n % i == 0)
        {
            arr.Add(i);
            if (i == arr.First())
            {
                sb.Append($"{n} = {i}");
            }
            else
            {
                sb.Append($" + {i}");
            }
        }
    }
    int sum = arr.Sum();
    if (sum == n)
    {
        Console.WriteLine(sb);
    }
    else
    {
        Console.WriteLine($"{n} is NOT perfect.");
    }
}

문제 풀이 해석 내용

무한 루프 시작

while (true)
{
    List<int> arr = new List<int>();
    StringBuilder sb = new StringBuilder();
    int n = int.Parse(Console.ReadLine());
    if (n == -1) break;

무한 루프를 시작하여 사용자의 입력을 계속 받습니다.
arr 리스트와 sb 문자열 빌더를 초기화합니다.
사용자로부터 정수 n을 입력받고, 만약 n이 -1이면 루프를 종료합니다.

 

 

약수 찾기

for (int i = 1; i < n; i++)
{
    if (n % i == 0)
    {
        arr.Add(i);
        if (i == arr.First())
        {
            sb.Append($"{n} = {i}");
        }
        else
        {
            sb.Append($" + {i}");
        }
    }
}

1부터 n-1까지의 수를 순회하면서 n의 약수를 찾습니다.
n이 i로 나누어 떨어지면, 즉 i가 n의 약수이면 arr 리스트에 추가합니다.
첫 번째 약수일 경우에는 n = 약수 형태로 sb에 추가하고, 그 이후의 약수는 + 약수 형태로 추가합니다.

 

 

완전수 여부 확인

int sum = arr.Sum();
if (sum == n)
{
    Console.WriteLine(sb);
}
else
{
    Console.WriteLine($"{n} is NOT perfect.");
}

arr 리스트에 저장된 약수들의 합을 sum 변수에 저장합니다.
만약 sum이 n과 같다면, 완전수이므로 sb에 저장된 문자열을 출력합니다.
그렇지 않으면, "{n} is NOT perfect."라는 메시지를 출력합니다.

 

 

실행 결과

실행 결과

 

728x90

'C#' 카테고리의 다른 글

백준 C# 2581 문제 풀이  (0) 2024.10.14
백준 C# 1978 문제 풀이  (0) 2024.10.13
백준 C# 2563 문제 풀이  (0) 2024.10.11
백준 C# 2501 문제 풀이  (0) 2024.10.10
백준 C# 5086 문제 풀이  (0) 2024.10.09