본문 바로가기

프로그래밍60

[알고리즘] 다익스트라 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 다익스트라(Dijkstra) 다익스트라 알고리즘은 각 노드간 가장 짧은 경로를 찾는 알고리즘이다. GPS에 사용되는 알고리즘이다. 소스코드 #define __main #ifdef __main #include #define INF 10000 #define MAX 128 int d[MAX] = { 0 }; int v[MAX] = { 0 }; int xy[MAX][MAX] = { 0 }; int Get_Index(int n) { int min = INF; int index = 0; for (int i = 0; i < n; i++) {.. 2020. 11. 25.
[알고리즘] 깊이 우선탐색(DFS) 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 깊이 우선탐색(Depth First Search) 시작 노드를 v[]배열에 입력한다. 시작 노드의 인접한 노드를 순차적으로 방문한다. 이미 방문한 노드를 제외하고 더이상 방문할 노드가 없으면 시작 노드로 되돌아 온다. 2~3번을 반복한다. 소스코드 #define __main #ifdef __main #include #define MAX 128 int v[MAX] = { 0 }; int xy[MAX][MAX] = { 0 }; void DFS(int n, int s) { v[s] = 1; printf("%d 번 노드 방문\n", s.. 2020. 11. 23.
[알고리즘] 너비 우선탐색(BFS) 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 너비 우선탐색(Breadth First Search) 시작 노드를 큐에 넣는다. Deque로 가져온 노드를 방문한 노드를 체크하는 v[]배열에 체크한다. 인접한 노드 중 방문하지 않은 노드를 큐에 넣어준다. 2~3번을 반복해준다. 소스코드 #define __main #ifdef __main #include #define MAX 128 typedef struct __Que { int* que; // 큐 int max; // 큐의 최대입력 개수 int num; // 현재 큐에있는 데이터 개수 int front; // Deque할 위.. 2020. 11. 21.
[알고리즘] 재귀 함수 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 재귀함수 재귀 함수란 자기 자신을 재참조 하는 방법이다. 이때 주의할 점은 함수를 작성 할때 종료 조건을 반드시 작성해야 된다. 만약 그렇지 않으면 무한 루프에 빠지게 되고 결국 메모리 부족 현상이 발생할 것이다. 팩토리얼 int factorial(int n) { int tmp = 1; for (int i = 2; i = 1]) = n * factorial(n - 1) 소스코드 #define __main #ifdef __main #include int factorial(int n) { if (n == 1) return 1; //.. 2020. 11. 19.