본문 바로가기

728x90

Bruteforce

(4)
[Problem] 배낭 문제의 브루트 포스 알고리즘적 접근 (Knapsack, Brute Force) 해당 포스팅은 [Problem] 배낭 문제 (Knapsack Problem) 의 하위 문서입니다. 브루트 포스 배낭 (BFKnapsack) 클래스 구현 class BFKnapsack(Knapsack): def get_algorithm(self): return 'Brute Force' def zero_one_solve(self): # TODO: 0-1 배낭 문제 브루트 포스로 구현 3.1.1. 0-1 배낭 문제 접근 $n$ 개의 물체를 배낭에 넣고자 할 때, 가능한 경우의 수는 집합 $A$의 가능한 부분집합의 개수인 $2^n$ 이고, 이는 곧 시간 복잡도가 $O(2^n)$ 임을 의미한다. 기하급수적 복잡도(Exponential Complexity) 를 지닌 해당 접근은 별로 좋지 못하다고 할 수 있다. 구..
[Problem] 배낭 문제 (Knapsack Problem) 1. 개요배낭 문제 (Knapsack Problem)는 최대 수용 무게가 있는 어떤 배낭에 각각의 특정 가치를 갖는 여러 물체를 넣되, 배낭이 지니는 가치가 최대가 되도록 하는 물체의 조합을 찾는 문제를 의미한다.기본적으로 다음을 정의하면,배낭의 최대 수용무게: $W_{ \max }$물체의 집합: $A = \{ a_i | 0 \lt i \le n \}$물체의 개수: $n$$i$ 번째 물체의 무게: $w_i$$i$ 번째 물체의 가치: $v_i$물체: $a_i = (w_i, v_i)$물체 ($a_i$)$a_1$$a_2$$\cdots$$a_n$무게 ($w_i$)$w_1$$w_2$$\cdots$$w_n$가치 ($v_i$)$v_1$$v_2$$\cdots$$v_n$$W_{ \max }$ 만큼 수용할 수 있는 배낭에..
[Baekjoon] 1065번 한수 S4 1065번 - 한수 1. 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. Input 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. Output 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 2. 사용 알고리즘 완전 탐색, 브루트 포스 (Brute Force) 3. 풀이 자연수 N 자연수 $N$은 $1000$ 보다 작거나 같으므로 수열의 항은 최대 4개이다. $N < 100$ $N$은 한 자리 수 혹은 두 자리 수 이므로, 모든 경우에서 등차수열의 특징을 만족..
[Algorithm] 완전 탐색, 브루트 포스 (Brute Force) 1. 개요브루트 포스 (Brute Force) 는 모든 경우에 대해서 탐색하며 조건을 충족하는 경우에 한해 결과를 도출하는 방식으로, 탐색 알고리즘의 한 종류이다. 완전 탐색 알고리즘이라고도 한다.2. 의의브루트 포스는 모든 경우에 대한 탐색으로 결과의 100%의 정확성을 추구한다.3. 조건브루트 포스를 사용하기 위해서는 다음의 조건을 만족하여야 한다.브루트 포스의 적용 조건문제 해결 방법 정의문제 수의 제한3.1. 문제 해결 방법 정의해결할 문제의 정확한 정의를 바탕으로 조건이 충족되는 경우를 찾아나가야 한다.3.2. 문제 수의 제한해결할 문제의 수가 적당해야 한다.너무 많은 양의 문제를 해결해야 할 경우, 많은 시간을 소요하는 등의 성능 저하가 발생한다.4. 종류4.1. 선형 탐색반복문 등을 사용하여..

728x90