Brute : 무식한
Force : 힘
직역하면 무식한 힘을 갖는 알고리즘이라는 뜻으로 가능한 모든 경우의 수를 모두 탐색하면서 결과를 도출하여 완전 탐색 알고리즘의 한 종류이지만 완전 탐색의 또 다른 이름으로 불리기도 한다.
- 브루트포스 알고리즘은 대부분 반복문과 조건문을 통하여 답을 도출한다.
- 모든 경우의 수를 전부 탐색하기 때문에 100%의 정확성을 보장하지만 높은 시간 복잡도를 갖는다.
솔루션이 잘 정의되어 있지 않은 문제라면 브루트포스를 사용한 솔루션이 올바른지를 확인할 수 없다.
반복문을 사용하는 경우

public class BruteForceLoop {
public static void main(String[] args) {
int[] password = {3,4,5};
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
for(int k = 0; k < 10; k++) {
if(password[0] == i && password[1] == j && password[2] == k) {
System.out.println("비밀번호 : " + i + j + k);
break;
}
}
}
}
}
}
재귀를 사용하는 경우

public class BruteForceRecursion1 {
public static void main(String[] args) {
System.out.println("10! : " + factorial(10));
}
static int factorial(int n) {
if(n == 1) {
return n;
} else {
return n * factorial(n-1);
}
}
}

public class BruteForceRecursion2 {
public static void main(String[] args) {
System.out.println("fibonacci의 10번 째 수 : " + factorial(10));
}
static int fibonacci(int n) {
if(n == 0 || n == 1) {
return n;
} else {
return fibonacci(n-1) * factorial(n-2);
}
}
}