알고리즘/백준 BOJ
[ BOJ/C# ] 4673 셀프 넘버
왹져박사
2023. 11. 7. 21:48
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();
}
}
}