최대 1 분 소요

Intro

image

image

문제해결 및 소스코드

#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;
}


댓글남기기