링크 : https://www.acmicpc.net/problem/4673
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static int solution(int num) {
// 자기 자신 더하기
int sum = num;
// 자릿수 더하기
while (num != 0) {
sum += num % 10;
num /= 10;
}
// 생성자가 있는 수를 반환
return sum;
}
public static void main(String[] args) throws IOException {
// 불린은 기본적으로 false로 초기화 됨.
// 따라서 1~10000 까지의 숫자 num 을 solution에 넣고, num으로 만들어지는 생성자를 반환받아 10001 보다 작을 경우 해당 인덱스를 모두 true 로 만듦.
boolean[] constNums = new boolean[10001];
constNums[0] = true;
for (int i = 1; i < 10001; i++) {
int n = solution(i);
if(n < 10001) {
constNums[n] = true;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10001; i++) {
if(!constNums[i]) sb.append(i).append('\n');
}
System.out.println(sb);
}
}