Algorithm/Baekjoon

[백준][C++] 4673번 셀프 넘버

연모링 2021. 6. 30. 16:30
728x90

#include <iostream>
using namespace std;

int d(int n) {
	int num = n;
	while (n != 0)
	{
		num += n % 10;
		n = n / 10;
	}
	return num;
}

int main() {
	bool a[10001] = { false };

	for (int i = 1; i < 10001; i++)
	{
		int x = d(i);
		if (x < 10001)
			a[x] = true;
	}
	for (int j = 1; j < 10001; j++)
	{
		if (!a[j])
			cout << j << endl;
	}
}

d함수를 먼저 작성한 뒤 메인 함수에 Bool형 배열을 선언하였습니다.

d함수를 이용해 생성자가 존재하는 숫자는 배열 a에서 true로 바꿔줍니다.

그렇게 1에서 10000까지 for문을 돌려서 셀프 넘버를 찾아냅니다.

마지막에 배열 a 에서 false인 값만 출력해주면 됩니다.

 

728x90