728x90
문제 링크 : https://www.acmicpc.net/problem/9506
목차
1 설명
2 내 코드
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 |