본문 바로가기
C#

[C# 문제] 더하기 사이클 (While문을 사용한 문제)

by 샤나엘 2021. 10. 19.
반응형

문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때,

10보다 작은 정수가 주어지면 앞에 0을 붙여 두자리 숫자로 만들고(ex : 2가 주어지면 02로 만듬)

각 자리의 숫자를 더한다.

그 다음 주어진 수의 가장 오른쪽 자리의 수와 앞에서 구한 합의 가장 오른쪽 자리의 수를 이어 붙이면 새로운 수를 만들 수 있다.

 

예제)

주어진 정수 : 26

 

1번 사이클

2 + 6 = 8이다.

새로운 수는 26의 가장오른쪽 자리 수 6과 08의 가장 오른쪽 자리의 수 8을 이어 붙여서 68로 만든다.

 

2번 사이클

6 + 8 = 14이다.

새로운 수는 68의 가장오른쪽 자리 수 8과 14의 가장 오른쪽 자리 수 4를 이어붙여 84를 만든다.

 

3번 사이클

8 + 4 = 12이다.

새로운 수는 84의 가장 오른쪽 자리 수 4와 12의 가장 오른쪽 자리 수 2를 이어 붙여 42를 만든다.

 

4번 사이클

4 + 2 =  6이다.

새로운 수는 42의 가장 오른쪽 자리 수 2와 06의 가장 오른쪽 자리 수 6을 이어 붙여 26을 만든다.

 

위의 예제는 4번만에 원래의 수로 돌아올 수 있다.

26의 사이클은 4이다.

 

정수 N의 값이 주어졌을 때 N의 사이클 값을 출력하는 프로그램을 작성하시오.

 

입력

첫번째 줄에 N의 값을 입력받는다. N의 값의 범위는 0 <= N <= 99 이다.

 

출력

사이클 수를 출력한다.

 

코드

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string data = Console.ReadLine();

            int initialNumber = int.Parse(data);

            int num = initialNumber;

            int roopCount = 0;

            while (true)
            {
                roopCount++;

                int a = num / 10;
                int b = num % 10;

                int sum = a + b;

                num = (b * 10) + (sum % 10);

                if (num == initialNumber)
                    break;
            }

            Console.WriteLine(roopCount);
        }
    }
}

 

결과

반응형

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

DataGridView Cell색깔 변경 - C#  (0) 2021.10.27
[C# 문제] 소수 구하기  (0) 2021.10.08
[C# 문제] 윤년구하기  (0) 2021.10.06
[C# 문제] 두 수를 비교해보자.  (0) 2021.10.06
[C# 문제]Hello World! 를 출력하시오.  (0) 2021.10.06

댓글