C#

백준 C# 2231 문제 풀이

psb08 2024. 9. 13. 00:28
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을 출력합니다.

 

 

실행 결과

실행 결과 1

 

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