컴퓨터 공학/백준
[백준] JAVA 자바 : 셀프 넘버 (4673번)
kim-dev
2024. 5. 17. 21:23
반응형
백준을 풀면서 처음 만난 완전탐색 문제인데... 생각보다 얕봤다가 은근 애먹었던 문제...
겨우 실버 5인데... 이런 문제에 헤맸다니 진짜 앞길이 막막하다...
여튼 어떻게 풀었냐면, 1부터 10,000까지 모든 수를 돌면서 생성자가 되는 수를 모두 체크한다. 생성자가 되는 수는 list에 1로 표시해 두고, 셀프 넘버는 그대로 0으로 둔다.
그리고 맨 마지막에 이 리스트를 전부 돌면서 0인 인덱스들만 출력한다.
import java.io.IOException;
public class SelfNumber {
public static void main(String[] args) throws IOException {
int[] list = new int[10001];
// 1부터 10000까지 돌면서 모두 구함
for (int i=1; i<10001; i++) {
if(list[i] == 1) continue;
int now = i;
while (now <= 10000) {
if (now != i) {
list[now] = 1;
}
now = kaprekar(now);
}
}
for (int i=1; i<list.length; i++) {
if (list[i] != 1) {
System.out.println(i);
}
}
}
public static int kaprekar(int number) {
int tmp = number;
while (number != 0) {
tmp += number % 10;
number /= 10;
}
return tmp;
}
}