본문 바로가기

[BOJ] - JAVA

[백준] 4673 : 셀프 넘버 JAVA 풀이

1. 셀프넘버인지 체크할 배열을 만든다.

2. 1부터 10000까지의 값에 대해 자기 자신과 각 자리수를 더한 값을 구하고, 이렇게 구해진 값은 셀프넘버가 아니니 배열에 체크한다.

    -> 10000보다 작거나 같은 셀프 넘버만 구하면 되기 때문에 10000이 넘어가는 값이 나오면 무시한다.

3. 셀프 넘버인 값만 출력한다.

public class Main{
    public static boolean[] arr = new boolean[10001];
    public static void main(String[] args){
        FindSelfNum(arr.length-1);
        for(int i=1;i<arr.length;i++){
           if(arr[i]==false) System.out.println(i);
        }
    }
    public static void FindSelfNum(int n){
        for(int i=1;i<=n;i++){
            int num=0;
            num += i+(i/1000)+((i%1000)/100)+((i%100)/10)+(i%10);
            if(num<arr.length) arr[num]=true;
        }
    }
}