풀이)
어떤 임의의 수 N이 들어올 때, 해당 수 N 은 K + K의 각 자릿수 합이다.
예로들어 네자릿수 정수 N 이 들어오면 해당 N 을 만드는 생성자는 임의의 K + K의 각 자릿수가 되는 것이다.
즉, 수식으로 보면 N(4) - (k1 + k2 + k3 + k4) = K
즉, 네자릿수 N 의 각 자릿수의 합이 최대일 때는 9 + 9 + 9 + 9 일 것이다.
즉, 우리는 입력받은 정수 N 에 대하여 자릿수의 길이만큼 9를 빼주면 된다.
내 코드)
// i 는 가능한 최솟값인 N - 9 * N의 각 자릿수부터 시작
for(int i = (N - (N_length * 9)); i < N; i++) {
int number = i;
int sum = 0; // 각 자릿수 합 변수
while(number != 0) {
sum += number % 10; // 각 자릿수 더하기
number /= 10;
}
// i 값과 각 자릿수 누적합이 같을 경우 (생성자를 찾았을 경우)
if(sum + i == N) {
result = i;
break;
}
}