본문 바로가기
알고리즘/백준 BOJ

[ BOJ/C# ] 4673 셀프 넘버

by 왹져박사 2023. 11. 7.
728x90

https://www.acmicpc.net/problem/4673

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

아스키코드로 자릿수를 푸는 방향으로 해결하였다. 

풀고 C# 1등분의 코드를 보니 각 자릿수를 더해가는 방향으로 풀었다. 

using System;
using System.IO;
using System.Text;

namespace B4673
{
    class Program
    {
        static void Main()
        {
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
            StringBuilder sb = new StringBuilder();

            bool[] selfNums = new bool[10001];  //생성자가 없으면 false

            //int index = 1;
            int num = 0;
            for(int index=1; index < selfNums.Length; index++)
            {
                if (index < 10) selfNums[index * 2] = true; //10이하는 2배
                else
                {
                    string str = index.ToString();
                    num = index;
                    for (int i = 0; i < str.Length; i++) num += (str[i] - 48);
                    if (num <= 10000) selfNums[num] = true; 
                }
            }
            //출력
            for (int i = 1; i < selfNums.Length; i++) if (!selfNums[i]) sb.Append(i + "\n");
            sw.Write(sb);
            sw.Flush();
            sw.Close();
        }
    }
}

728x90

'알고리즘 > 백준 BOJ' 카테고리의 다른 글

[ BOJ/C# ] 1475 방 번호  (1) 2023.11.10
[ BOJ/C# ] 1065 한수  (0) 2023.11.08
[ BOJ/C# ] 2941 크로아티아 알파벳  (0) 2023.11.06
[ BOJ/C# ] 1789 수들의 합  (0) 2023.11.06
[ BOJ/C# ] 16435 스네이크버드, 골드  (0) 2023.11.05