본문 바로가기
알고리즘/백준

백준 4673번 셀프 넘버 자바 java

by 클로드 2021. 4. 11.
반응형

문제

 

풀이

 

10,000 보다 작은 셀프 넘버를 구하기 위해서 10000번 정도 for문을 돌리면서

길이가 10000인 배열을 선언하고

생성자를 구하는 함수를 만들어 해당 값을 리턴해서 해당 배열에 인덱스에 집어넣고 카운트를 높이고

카운트 0만 출력(셀프 넘버)을 하여 해결하였다

 

코드

public class Main {
    public static void main(String[] args) {
        int[] selfNumbers = new int[10000];
        for (int i = 1; i < 10000; i++) {
            selfNumbers[generator(i)]++;
        }

        for (int i = 1; i < selfNumbers.length; i++) {
            if (selfNumbers[i] == 0) {
                System.out.println(i);
            }
        }
    }

    public static int generator(int n) {
        int sum = n;

        while (n != 0) {
            sum += n % 10;
            n /= 10;

            if (sum > 9999) {
                return 0;
            }
        }

        return sum;
    }
}

 

출처

www.acmicpc.net/problem/4673

반응형

댓글