4673 셀프 넘버[함수/Silver 5]

📋 문제 :

셀프 넘버

💡 문제 풀이 :

생성자 존재 여부 체크를 위한 리스트/배열을 생성한다.
생성자가 존재하면 셀프 넘버가 아니므로 리스트를 True로 초기화한다.
for문을 돌며 해당 수로 부터 생성된 수에 해당하는 리스트값을 False로 변경해준다.
ex) 33 + 3 + 3 = 39 이므로 39는 33이라는 생성자가 존재하므로 39는 True->False
이때 10000보다 작거나 같은 셀프 넘버를 구해야 하므로, 생성된 수가 10001보다 작은지 체크해줘야한다.
for문이 종료되면 True인 리스트 요소의 index를 출력해준다.

💻 코드 :

python 코드

if __name__ == '__main__':
    def is_selfnumber(n):
        N = [int(i) for i in str(n)]
        return n+sum(N)

    check = [True]*10001

    for i in range(10000):
        tmp = is_selfnumber(i+1)
        if tmp < 10001:
            check[tmp] = False

    for i in range(1, 10001):
        if check[i]:
            print(i)

java 코드

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        boolean[] check = new boolean[10001];
        Arrays.fill(check,true);

        for(int i = 0; i<10000;i++){
            int tmp = is_Selfnumber(i+1);
            if(tmp<10001)
                check[tmp] = false;
        }
        for(int i = 1;i<10001;i++){
            if(check[i])
                System.out.println(i);
        }

    }
    public static int is_Selfnumber(int n){
        int N = n;
        while(n>0){
            N += n%10;
            n /=10;
        }
        return N;
    }
}

좋은 웹페이지 즐겨찾기