티스토리 뷰
해결방법
문제를 보고 모든 경우의 수를 확인해야 겠다는 생각을 했습니다.
d(n) = n + n의 각 자리수의 합을 구하는 함수
여기서 n을 d(n)의 생성자라고 하는데, 이 생성자가 없는 수를 셀프 넘버라 하고, 이를 구하는 문제입니다.
1부터 10000까지 루프를 돌면서 d(n)함수가 진행되는 숫자들을 기록하고,
이에 해당하지 않는 수를 루프를 돌며 출력하여 해결하였습니다.
코드
package baekjoon;
public class J4673 {
static int[] arr = new int[10001];
static void d(int n) {
int sum = 0;
for(int i=0; i<String.valueOf(n).length(); i++) {
sum += (String.valueOf(n).charAt(i) - '0');
}
int nx = n + sum;
if(nx <= 10000) {
arr[nx] = 1;
}
}
public static void main(String[] args) {
for(int i=1; i<=10000; i++) {
d(i);
}
for(int i=1; i<=10000; i++) {
if(arr[i]==0) System.out.println(i);
}
}
}