#include <iostream>
using namespace std;
/* <문제해결>
규칙1. 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하라.
문제를 해결하기위해 다음과 같은 방식을 생각했다.
1. 1부터 10000까지 셀프 넘버인지 판별할 배열을 준비한다.
2. n과 n의 각 자리수를 더하는 함수 Solution을 구현하고, 결과를 리턴한다.
3. 리턴된 결과는 셀프 넘버가 아니므로, 배열의 해당 인덱스에 셀프넘버가 아님을 표시한다.
4. 셀프넘버인 인덱스만 출력한다.
*/
int Solution(int target)
{
int result = target;
// target을 10으로 계속해서 나눈 나머지는 각 자리수가 된다.
while (target != 0)
{
result += (target % 10);
target = target / 10;
}
return result; // 셀프넘버가 아닌 수
}
int main(void)
{
bool selfNum[10000] = { false, }; // false인 인덱스는 셀프넘버이다.
for (int i = 1; i < 10000;i++)
{
int temp = Solution(i);
if (temp < 10000)
selfNum[temp] = true;
}
for (int i = 1;i < 10000;i++)
{
if (selfNum[i] == false)
cout << i << "\n";
}
return 0;
}
댓글남기기