문제설명
어느 한 자연수 N과 N의 각 자릿수의 합을 생성자라고 합니다. 이러한 생성자를 가지지 않는 수를 셀프넘버라고 합니다. 이 문제는 1~10000사이에 있는 셀프 넘버를 출력하는 문제입니다.
작동 순서
1. boolean 배열을 10001개 생성하고 true로 초기화시켜줍니다.
2. isSelfNumber는 입력된 숫자와 그 숫자의 각 자릿수를 더하여서 boolean에서 해당하는 순서의 값을 false로 바꾸는 함수입니다.
3. 1부터 10000까지 함수를 실행합니다.
4. self_number 배열에서 true 값을 가지는 숫자들만 출력을 합니다.
소스코드
package 백준연습;
import java.util.Arrays;
public class 백준_4673번_셀프넘버 {
static boolean[] self_number=new boolean[10001];
static void isSelfNumber(int j){
int sum=j;
String digit=String.valueOf(j);
for(int k=0;k<digit.length();k++)
sum+=digit.charAt(k)-'0';
if(sum<10001)
self_number[sum]=false;
}
public static void main(String[] args){
Arrays.fill(self_number, true);
for(int i=0;i<=10000;i++)
isSelfNumber(i);
for (int l=0;l<=10000;l++)
if(self_number[l])
System.out.println(l);
}
}
후기
자바 문법이 아직 익숙하지 않아서 어려움을 겪었는데 확실히 파이썬이 굉장히 배우기 쉬운 언어인걸 느끼는 것 같습니다.