
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean [] sNum = new boolean [10001];
// 0은 제외하니까 10001까지
for(int i = 1; i<10001; i++) {
int num = d(i);
if(num < 10001) {
sNum[num] = true;
}
}
for(int i = 1; i<10001; i++) {
if(sNum[i] == false) {
System.out.println(i);
}
}
}
public static int d (int N) {
int sum = N;
while(N!=0) {
sum = sum + N%10;
N = N/10;
}
return sum;
}
}
언제쯤 구글에서 풀이 검색 안해볼 수 있을까..
일단 이번 문제를 보고 셀프넘버를 배열에 담고 배열에 없는 숫자만 출력하자 ! 라는 접근을 했다.
그런데 ~~ 그 이후에 어떻게 처리를 해야 할지 모르겠어서 고민을 하다,,
구글의 도움을 빌렸다 ~~
구글에서는 배열에 담고 셀프넘버인 수는 true, 아닌 수는 false를 반환하는 식으로 풀이를 했다.
그리고 나는 d함수를 1000자리, 100자리, 10자리, 1자리 각각 계산해서 더하는 식으로 하려고 했는데 천재만재들은 숫자가 0이 될 때까지 10의 자리 수를 깎아내리면서 계산하더라
창조의 어머니는 모방이니까,, 이렇게 하다 보면 나도 직접 천재만재 코드를 짤 수 있는 날이 오겠지??!!