브루트 포스

빠른 설명

브루트 포스는 가능한 모든 경우를 직접 확인하는 방법이다. 경우의 수가 작거나 제한이 작을 때 가장 확실하다.

언제 쓰는가

  • 이 작을 때
  • 모든 조합, 순열, 부분집합을 확인해야 할 때
  • 먼저 완전탐색으로 기준 답을 만든 뒤 최적화를 생각할 때

시간복잡도

  • 이중 반복문:
  • 부분집합 전체 탐색:
  • 순열 전체 탐색:

참고자료

C++ 코드

#include <algorithm>
#include <deque>
#include <functional>
#include <iostream>
#include <queue>
#include <stack>
#include <string>
#include <utility>
#include <vector>
using namespace std;
 
int main() {
    vector<int> a = {2, 7, 11, 15};
    int target = 9;
 
    for (int i = 0; i < (int)a.size(); i++) {
        for (int j = i + 1; j < (int)a.size(); j++) {
            if (a[i] + a[j] == target) {
                cout << i << ' ' << j << '\n';
            }
        }
    }
}

Python 코드

a = [2, 7, 11, 15]
target = 9
 
for i in range(len(a)):
    for j in range(i + 1, len(a)):
        if a[i] + a[j] == target:
            print(i, j)