POST

백준 2231번 분해합 [C언어]

#include <stdio.h>

/*
생성자를 2로 나눴을 때, 2곱하기?
*/
int main(void)
{
	unsigned char source[10000];
	scanf("%s", &source);

	unsigned char len;
	len = strlen(source);
	int size = atoi(source);
	if (len <= 3) {
		for (int i = (size / 2); i < size; i++) {
			if ((i + (i / 100) + ((i%100)/10) + (i % 10)) == size)
			{
				printf("%d", i);
				return 0;
			}
		}
	}
	else if (len <= 7) {
		for (int i = (size / 10)*9; i < size; i++) {
			if ((i + (i / 1000000) + ((i % 1000000) / 100000) + ((i % 100000) / 10000) + ((i % 10000) / 1000)+ ((i % 1000) / 100)+ ((i % 100) / 10)+(i % 10)) == size)
			{
				printf("%d", i);
				return 0;
			}
		}
	}
	printf("0");
}

각 자리수를 제한하여 풀었습니다.

최소 시간을 위해서 숫자 자릿수에 대한 길이 제한을 했습니다.