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;
}
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 10872 : 팩토리얼 JAVA 풀이 (0) | 2022.05.21 |
---|---|
[백준] 1065 : 한수 JAVA 풀이 (0) | 2022.05.21 |
[백준]15596 : 정수 n개의 합 JAVA 풀이 (0) | 2022.05.21 |
[백준] 9020 : 골드바흐의 추측 JAVA 풀이 (0) | 2022.05.21 |
[백준] 4948 : 베르트랑 공준 JAVA 풀이 (0) | 2022.05.19 |