#include<stdio.h>
int func(int n) {
	int sum = n;
	while (n > 0) {
		sum += n % 10;
		n = n / 10;
	}
	return sum;
}

int main()
{
	int i, arr[10001] = { 0 }, result;
	for (i = 1; i <= 10000; i++) {
		result = func(i);
		if (result < 10001) {
			arr[result] = 1;
		}
	}
	for (i = 1; i <= 10000; i++) {
		if (arr[i] != 1) {
			printf("%d\n", i);
		}
	}
	return 0;
}

<코드 설명>

- func 함수 : 인자값을 sum에 넣어준다. sum에 n을 10으로 나눈 나머지(일의 자리)를 더해주며, n을 10 나눠준다(십의 자리). 또 이 십의 자리를 더해주며 이를  n이 0보다 클 때까지 반복시켜준다. 

 

  먼저 배열 arr를 만들어주었다. 10000까지의 수를 확인해주어야 하기 때문에 이를 for문을 통해 i가 1부터 10000까지 반복시켜주었다. result에 func(i)를 저장해주고 result가 10001 미만이면 arr[result]에 1을 저장시켜준다. 그리고 이 과정이 끝나면 arr의 저장값이 1이 아닌 경우만 출력해주었다.

 

<실행 결과>

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10866 덱  (0) 2022.04.29
[BOJ] 10845 큐  (0) 2022.04.28
[BOJ] 1929 소수 구하기  (0) 2022.04.02
[BOJ] 10828 스택  (0) 2022.04.02
[SISS] C 백준 8주차 (11720, 1085, 10250)  (0) 2022.02.14

+ Recent posts