baekjoon 4673

p3pwp3p·2022년 6월 1일
0

baekjoon

목록 보기
19/36

https://www.acmicpc.net/problem/4673


Idea

셀프넘버는 소수가 아닌 수랑 개념이 비슷하다고 생각한다. 솔직히 무슨 소린지 몰라서 찾아보고 한참만에 이해했다 . .
arr 배열을 모두 0으로 초기화 시켜준다.
1부터 10000까지 증가하는 반복문을 만들고 반복문에 iself_num 함수에 인자값으로 넘긴다.
self_num 함수는 인자값 n과 1의자리 ~ n의 length 까지의 자릿수의 수를 모두 더한 값을 반환해주는 함수이다.
이 수는 셀프 넘버가 아니므로 arr[n]에 1을 대입해주고 마지막에 출력 반복문에 조건을 arr[i] 가 0이면 그 배열의 index를 출력한다.
처음에 배열을 모두 0으로 초기화 시켜줬기 때문에 셀프 넘버인 배열의 index는 1이 대입되어 있기 때문에 셀프 넘버를 제외한 숫자는 출력이 된다.


Code

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int self_num(int n);

int main(void) {
	int arr[10001] = { 0, };
	int n;

	for (int i = 1; i < 10001; i++) {
		n = self_num(i);
		if (n < 10001) {
			arr[n] = 1;
		}
	}

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

	return 0;
}

int self_num(int n) {
	int sum = n;
	while (n > 0) {
		sum += n % 10;
		n /= 10;
	}

	return sum;
}

쿡쿡

profile
💭(。•̀ᴗ-)✧

0개의 댓글