연습문제/C# 연습문제

3. 숫자의 각 자릿수 더하기

규남 2023. 7. 23. 20:28
반응형

<소스 코드>

namespace Test
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 각 자리수의 합 계산하기

            // 1. 단순 계산 알고리즘으로 나타내기
            int n = 1234;
            int result = 0;

            while (n > 0)
            {
                result += n % 10;

                n = n / 10;
            }

            Console.WriteLine(result);

            // 2. 배열을 이용한 계산
            // 숫자를 문자열로 바꾼뒤에 각각의 문자는 해당 아스키 코드를 
            // 가지고 있으므로 (문자 - 문자)를 통해 실제 숫자로 바꿔준다.

            // ('1' - '0') 은 아스키코드로 (49 - 48)이므로 1이 나온다. 
            // 이것을 (int)형으로 변환하면 숫자 1로 바뀐다.

            // 만약 단순하게 생각해서 (int)num[i]로 적는다면 
            // 아스키코드 숫자인 49가 나와서
            // 49를 (int)형으로 변환하면 숫자 49를 그대로 나온다.
            // 그럼 1+2+3+4가 아니라 49+50+51+52 = 202라는 결과가 나온다

            n = 1234;
            result = 0;

            string num = n.ToString();
            for(int i = 0; i < num.Length; i++)
            {
                result += (int)num[i] - '0';
            }

            Console.WriteLine(result);
        }
    }
}

<결과 확인>

728x90
반응형