백준 4673 C

Kkackit·2021년 9월 2일

Beakjoon

목록 보기
8/33
#include<stdio.h>

int selfNumber(int a,int max_range , int matrix[max_range]);
int print(int max_range, int matrix[max_range]);
int main(void)
{
    int start_N = 1;
    int max_range = 10000;

    int matrix[10000] = {0,};

    for (int i = 0; i < max_range; i++)
    {
	matrix[i] = i; // matrix 함수에 1~ 10000까지 값을 차례대로 삽입
    }

    for (start_N; start_N < max_range; start_N++)
    {
	selfNumber(start_N, matrix, max_range); 
    }

    print(matrix, max_range);
}




int selfNumber(int origin_number, int max_range , int matrix[max_range])
{
    
    int digit[4] = {0,}; // 0, 1, 2, 3, 4
    
    int temp = origin_number;
    int count = 0; // 자릿수 구하기용 변수
    int result = origin_number;

    while (temp != 0)
    {
        digit[count] = temp % 10; //가장 낮은 자리의 숫자부터 digit[]에 넣기
	temp /= 10; //가장 낮은 자리 숫자 삭제
	count++;
    }
    
    for (int i = 0; i < count; i++)
    {
	result += digit[i]; // 생성자 구하기
    }



    if((result <= max_range)) // matrix 배열에 생성자 위치 값에 0 삽입
    {
	matrix[result] = 0;
	selfNumber(result, matrix); //반복
    }
    
}

int print(int max_range, int matrix[max_range])
{
    for (int i = 0; i < max_range; i++)
    {
	// matrix 배열의 값이 0이 아니라면 셀프 넘버이므로 출력
	if(matrix[i] != 0)
	{
	    printf("%d\n", matrix[i]);
	}
    }
}

0개의 댓글