목록C++ 개념 공부/알고리즘 (15)
Taene's

#include using namespace std; int map[6][6] = { 0,1,1,1,0,0, 1,0,0,1,0,1, 1,0,0,1,0,0, 1,1,1,0,1,1, 0,0,0,1,0,1, 0,1,0,1,1,0 }; char str[10] = "ZADCEB"; int visit[10] = {}; int cnt = 0; char path[10] = ""; void run(int n, int level) { if (n == 5)//도착 인덱스 5(B 도착) { cnt++; cout
1) Dynamic Programming (DP) - 큰 문제들을 나누었을 때, 작은 문제들이 중복될 수 있다. - 따라서 중복을 효율적으로 처리하는 방법을 파악하는 것이, 문제로 발생함 2) 분할정복 (Divde & Counqer) - 큰 문제들을 나누었을 때, 작은 문제들이 중복될 수 없다. - 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하고 다시 그 결과를 이용하여 큰 문제를 해결 할 때 사용하는 방식으로 프로그래밍 기법 중 하나이다. - 피보나치 수열로 문제를 풀면 시간초과가 나기 때문에 배열에 미리 저장하고 답이 필요할 때마다 반환하는 방식이다. ex) 피보나치 수열 5번을 구하는 문제 -> for문 5번 or..

brute force(무식한 힘, 전체탐색) 문제로 완전탐색 알고리즘이다. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다. 일반적 방법으로 문제를 해결하기 위해서는 모든 자료를 탐색해야 하기 때문에 특정한 구조를 전체적으로 탐색할 수 있는 방법을 필요로 한다. 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상되는 모든 영역을 전체 탐색하는 방법이다. 선형 구조를 전체적으로 탐색하는 순차 탐색, 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색(DFS, Depth First Search)과 너비 우선 탐색(BFS, breadth first search)이 가장 기본적인 도구이다. - 그래프에서 완전탐색 방법 중 하나 - 탐색트리의 루트노드부터 목표노드..