728x90
완전 탐색 알고리즘(Brute Force)
어떤 알고리즘일까?
완전 탐색 알고리즘은 조건문이나 반복문을 통해 가능한 모든 경우의 수를 탐색하여 원하는 값을 구하는 알고리즘을 말한다. 알고리즘 설계의 가장 기본적인 접근 방법은 값이 존재할 것으로 예상되는 모든 영역을 전체 탐색하는 방법이다. 이러한 접근 방법을 생각해볼 때 완전 탐색 알고리즘은 알고리즘의 기본이라고 볼 수 있다.
장점과 단점
- 장점
완전 탐색 알고리즘의 장점은 발생 가능한 모든 경우의 수를 탐색하기 때문에 100%확률로 조건에 맞는 값을 구할 수 있다는 점이다. - 단점
완전 탐색 알고리즘의 단점은 발생 가능한 모든 경우의 수를 탐색하기 때문에 탐색할 영역이 크거나 복잡한 문제를 해결할 때는 코드가 비효율적이고 느릴 수 있다.
언제 사용하는가?
- 탐색할 영역의 크기가 작을 경우
탐색할 영역의 크기가 작을 경우 사용하는 이유는 전체 영역을 탐색하더라도 오랜 시간이 걸리지 않아 가장 간단하게 값을 구할 수 있는 방법이기 때문이다. - 구해야 하는 값의 특별한 규칙이 없을 경우
특별한 규칙이 없을 경우 사용하는 이유는 그 값을 구하기 위한 특별한 방법이 없기 때문에 전체 영역을 탐색할 수 밖에 없기 때문이다.
알고리즘 사용 예제
10의 약수의 합 구하기
- 문제 해결 방법
10의 약수의 합을 구하기 위해서는 먼저 10의 약수를 모두 구해야 한다.
10의 약수를 구하는 방법은 1부터 10 사이에 있는 자연수로 10을 나눠본 후 나머지가 0인지를 확인하면 된다. - 알고리즘 사용
여기서 완전 탐색 알고리즘을 사용하여 값이 있을 것이라고 생각되는 1부터 10사이의 값을 모두 탐색하여 약수를 구할 수 있다. - CODE
1
2
3
4
5
6
|
sum = 0
for i in range(1, 11):
if 10 % i == 0:
sum += i
print(sum)
|
cs |
알고리즘 관련 문제
[완전탐색 알고리즘] #1 백준 일곱 난쟁이 (파이썬,2309번) (tistory.com)
728x90
'[알고리즘] > [알고리즘 공부]' 카테고리의 다른 글
[알고리즘 공부] #5 큐 알고리즘(Queue) 알고리즘 with Python (0) | 2024.06.28 |
---|---|
[알고리즘 공부] #4 비트마스크(BitMask) 알고리즘 with Python (0) | 2024.06.26 |
[알고리즘 공부] #3 재귀(Recursive) 알고리즘 with Python (0) | 2024.06.06 |
[알고리즘 공부] #2 백트래킹(BackTracking) 알고리즘 with Python (2) | 2024.06.02 |