백준 1110 C#

문제: https://www.acmicpc.net/problem/1110

using System;

namespace practice
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;  // 사이클 횟수
            int newNum = 0;
            string n = Console.ReadLine();
            if (n.Length == 1) n = n + "0"; // 문자열의 길이가 1이면, 뒤에 0을 추가
            
            int nA = int.Parse(n.Substring(0,1));   // 지정된 위치에서 문자열의 길이만큼 문자열 반환
            int nB = int.Parse(n.Substring(1,1));

            newNum = nA + nB;
            String newNumber = newNum.ToString();
            
            while(true)
            {
                if (newNumber.Length >= 2) newNumber = nB.ToString() + newNumber.Substring(1,1);
                else newNumber = nB.ToString() + newNumber.Substring(0,1);
                count++;    // 사이클 카운트

                newNum = int.Parse(newNumber);                
                if (newNum == int.Parse(n)) break;  // n과 새로운 수의 값이 같다면 사이클 종료
                
                newNumber = newNum.ToString();

                if (newNumber.Length >= 2)
                {
                    nA = int.Parse(newNumber.Substring(0,1));
                    nB = int.Parse(newNumber.Substring(1,1));
                    newNum = nA + nB;
                }
                else
                {
                    nB = int.Parse(newNumber.Substring(0,1));
                    newNum = nB;
                }

                newNumber = newNum.ToString();
            }

            Console.WriteLine(count);    

        }
    }
}

좋은 웹페이지 즐겨찾기