[알고리즘]백준4673 셀프넘버-java

kimjingwon·2022년 7월 7일
0

1. 문제

2. 생각

수열이 가능한 조건을 찾아서 규칙을 만들어 푸는 문제인데

쉽다고 생각하고 규칙을 생각안하고 어렵게,비효율적으로 풀었다.
알고리즘이 푼 코드가 아닌 정답만 나오는 개판인 코드를 만들어냈다.
시간,메모리 면에서 엄청 손해를 봤다.

이 코드를 보면서 반성하고 앞으로 항상 코드타이핑 하기 전에 생각을 더 하자!

3. 코드

public class baekjoon4673 {

    static int n[];
    static boolean visit[];
    public static void main(String[]args ){


        n=new int[10001];
        visit=new boolean[10001];

        for(int i=0;i<10001;i++){
            n[i]=i;
        }
        int a=0;

        visit[2]=true;

        for(int i=2;i<10001;i++){
            if(visit[i]==true){
                continue;
            }
            a=i;
            while(a<10000 && visit[i]==false){
                a=d(a);

            }
            a=0;
        }
        visit[4]=true;
        for(int i=1;i< visit.length;i++){
            if(visit[i]==false){
                System.out.println(i);
            }
        }

    }

    public static int d(int n){
        String s=String.valueOf(n);
        String[]a = s.split("");

        for(int i=0;i<a.length;i++){
            n+=Integer.parseInt(a[i]);
        }
        if(n<10001){
            visit[n]=true;
        }

        return n;



    }
}

0개의 댓글