장점
- 모든 경우를 다 고려하기 때문에 확실하게 정답 찾을 수 있음
- 복잡한 알고리즘 X, 빠르게 구현 가능
-> 알고리즘이라기 보다는 ... 모든 경우 다 따지며 해 찾는 방식
단점
- 효율적이지 않다.
- 시간이 오래 걸린다.

import java.util.ArrayList;
import java.util.List;
public class baekjoon_4673 {
public static void main(String[] args) {
int N = 10000;
List<Integer> list = new ArrayList<>();
for (int i = 1; i < N - 1; i++) {
list.add(number(i));
}
for (int i = 1; i < N - 1; i++) {
if (!list.contains(i)) {
System.out.println(i);
}
}
}
public static int number(int N) {
String str = String.valueOf(N);
for (int i = 0; i < str.length(); i++) {
N += Integer.parseInt(String.valueOf(str.charAt(i)));
}
return N;
}
}

기존 풀이 .. 시간 마니 잡아먹음
public class baekjoon_4673_2 {
public static void main(String[] args) {
boolean[] isSelfNumber= new boolean[10000];
for (int i = 1; i < 10000; i++) {
int num = i;
int sum = i;
while (num > 0) {
sum += num % 10;
num /= 10;
}
if (sum < 10000) {
isSelfNumber[sum] = true;
}
}
for (int i = 1; i < 10000; i++) {
if (!isSelfNumber[i]) {
System.out.println(i);
}
}
}
}

셀프 넘버가 아닌 수를 true로 바꾸어 배열에 저장, 바로 출력하는 방식
메모리, 시간 줄어기
'Algorithm' 카테고리의 다른 글
| [알고리즘] 힙(heap) 자료구조 (1) | 2025.01.15 |
|---|---|
| [알고리즘] 분할정복 알고리즘 (2) | 2025.01.13 |
| [알고리즘] 이진탐색 알고리즘 (1) | 2025.01.06 |
| 하노이탑 알고리즘 이해하기 (재귀함수 사용) (1) | 2025.01.01 |
| stack 메서드 구현 (3) | 2024.01.26 |