모든 경우의 수를 다 체크해서 정답을 찾는 방법론
수도 코드
c ←first(P)
while c ≠ Λ do
if valid(P,c)
then output(P,c)
c ←next(P,c)
end while
→ P의 solution 후보 c를 모두 검사하는 과정
단순 Brute-Force
비트마스크
재귀
Fibo(n)
Begin
if n <= 1 then
Return n;
else
Return Call Fibo(n-1) + Call Fibo(n-2);
endif
End
순열
BFS/DFS
데이터의 크기가 작을 경우
답의 범위가 작고, 역추적 가능한 경우
위 문제는 1≤n,m≤200의 n개의 정수와 m개의 정수가 주어질 때
0≤an≤2^9, 0≤bm≤2^9, ci=an&bm의 최솟값을 구하는 문제이다.
위 경우에는 n,m을 모두 찾는 과정이 아니라(할 경우에는 200^200 경우의 수, 불가)
cn의 범위가 512 이하이기 떄문에 c1|c2|...|cn 또한 512 이하이다.
이 경우는 답을 완전탐색하는 경우이다.
참고
https://hongjw1938.tistory.com/78
https://www.freecodecamp.org/news/brute-force-algorithms-explained/