728x90
문제 링크 : https://www.acmicpc.net/problem/2231
백준 브론즈 2 문제 입니다.
내 코드
int num = int.Parse(Console.ReadLine());
bool check = false;
for (int i = 1; i <= num; i++)
{
int add = i;
int buff = i;
while(buff > 0)
{
add += buff % 10;
buff /= 10;
}
if (add == num)
{
Console.WriteLine(i);
check = true;
break;
}
}
if (!check)
Console.WriteLine("0");
코드 풀이 해석 내용
int num = int.Parse(Console.ReadLine());
bool check = false;
정수를 입력 받아 num에 저장합니다.
check 변수를 초기화 합니다. 이 값은 생성자를 찾았는지 확인합니다.
for (int i = 1; i <= num; i++)
{
int add = i;
int buff = i;
...
}
i를 1부터 num까지 반복합니다.
add 변수를 선언하고 i로 초기값을 설정합니다.
buff 변수도 선언하고 i로 초기값을 설정합니다.
add는 현재 i 값을 저장하며 buff는 i의 복사본이라고 할 수 있습니다. 각 자리수를 분리하기 위해 사용 됩니다.
while(buff > 0)
{
add += buff % 10;
buff /= 10;
}
while 루프를 통해 buff가 0보다 클 때까지 반복합니다.
buff % 10을 사용해 현재 자릿수를 출력하고 add에 더해줍니다.
buff /= 10을 사용해 buff의 자릿수를 하나씩 줄여갑니다.
if (add == num)
{
Console.WriteLine(i);
check = true;
break;
}
만약 add가 num과 같아졌다면 현재 i가 생성자라는 뜻입니다.
i를 출력하고 check를 true로 바꾼뒤 이 루프를 탈출합니다.
if (!check)
Console.WriteLine("0");
만약 check가 아직 false라면 생성자를 찾지 못했다는 것이므로 0을 출력합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 2920 문제 풀이 (0) | 2024.09.15 |
---|---|
백준 C# 10250 문제 풀이 (0) | 2024.09.15 |
백준 C# 31403 문제 풀이 (0) | 2024.09.13 |
백준 C# 2587 문제 풀이 (0) | 2024.09.13 |
백준 C# 1316 문제 풀이 (0) | 2024.09.12 |