Algorithm/baekjoon

셀프넘버

마닐라 2021. 12. 24. 15:42

📍 문제 설명

💡 접근

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);
        }

    }
}

'Algorithm > baekjoon' 카테고리의 다른 글

한수  (0) 2021.12.26
제로  (0) 2021.12.26
덩치  (0) 2021.12.26
크로아티아 알파벳  (0) 2021.12.24
그룹 단어 체커  (0) 2021.12.24