📍 문제 설명
💡 접근
1부터 만들어지는 수열을 10000까지 정의해보자.
각 자릿수를 더한 값을 구하는게 핵심이다.
셀프 넘버가 아닌 것들을 배열에 기록해놓고 셀프 넘버인 인덱스만 출력했다.
👩💻 코드
import java.util.*;
class Main {
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int[] arr = new int[10001];
for(int i = 1; i < arr.length; i++) {
if(arr[i] != 0) continue;
int n = i;
//수열 구하기
while(n < 10000) {
//n과 n의 각 자릿수를 더한 값을 n에 넣기
String s = String.valueOf(n);
int m = 0;
for(int j = 0; j < s.length(); j++) {
m += s.charAt(j) - 48;
}
//다음 수 완료
n += m;
if(n > 10000) break;
//해당 수는 셀프 넘버가 아닌것
arr[n] = 1;
}
}
for(int i = 1; i < arr.length; i++) {
if(arr[i] == 0) System.out.println(i);
}
}
}