C

[C]백준 11.브루트포스: 2231

열지희공 2022. 1. 20. 11:53

백준 2231

내코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	int cnt = 0;
	for (int i = 0; i < n; i++) {
		int sum = i;
		int copy = i;
		do {
			sum += (copy % 10);
			copy /= 10;
		} while (copy != 0);
		if (sum == n) {
			cnt++;
			printf("%d", i);
			break;
		}
	}
	if (cnt == 0) {
		printf("%d", 0);
	}
	
	return 0;
}

자연수 N의 생성자는 항상 N보다 작다. 반복문을 통해 N보다 작은 모든 수들의 분해합을 구해 N과 같은지 확인하고 같다면 이를 출력하고 cnt를 1증가시켰다. 만약 반복문을 모두 돌았는데도 cnt가 0이라면 해당 N은 생성자가 없는 것이기에 0을 출력했다.