일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Ajax
- 마이바티스
- 프레임워크
- mybatis
- 제이쿼리
- 웹개발
- 스프링
- jQuery
- Binding
- 웹페이지
- jsp
- html5
- 백엔드
- 오라클
- 서블릿
- 프론트엔드
- 웹서비스
- dbms
- css3
- spring
- c programming
- 미로 생성 알고리즘
- MVC
- Linked List
- 풀스택
- 로그인
- 회원가입
- 네비게이터
- 비밀번호찾기
- javascript
- Today
- Total
목록C Programming (4)
Programmer's Progress

BFS탐색 알고리즘을 공부하면서 미로를 탈출하는데 걸리는 최소비용, 거리, 최단 경로를 출력하는 문제를 여러 번 풀어보고, 또 내 지식으로 만들고자 복습하기도 했지만, 한 가지 아쉬웠던 점은 이러한 테스트 케이스로 사용할 미로가 그렇게 많지 않았다는 것이다. 그렇다고 미로를 수작업으로 만들수도 없는 일이었다. 그래서 미로를 어떻게하면 생성할 수 있는지 검색해본 결과, 여러 알고리즘이 있었지만 그중 BFS 탐색과 짝을 이룬다 할 수 있는 DFS 탐색으로 미로를 생성하는 알고리즘을 직접 구현해보았다. BFS탐색이 방문여부 배열을 이용하여 계속 새로운 노드를 방문하면서 Queue에 추가하고, 다시 탐색하는 과정을 반복하는 알고리즘이라면, DFS는 재귀적으로 탐색하는 방식이라고 할 수 있겠다. 그렇다면 DFS탐..

#include #include #include typedef struct node { int data; struct node *p_next; }NODE; int tokenize(char ***str) { //***str : 초기화된 2차원 포인터의 주소를 받는다. //temp : 임시로 문자열을 저장할 배열 char temp[201]; //*p_temp, *p : 임시로 사용할 포인터 변수 char *p_temp, *p; //cnt : 토큰 개수를 저장할 변수 //len : 분리한 문자열의 길이를 저장할 변수 int cnt = 0, len = 0; //문자열을 입력받는다. temp 배열에 저장한다. gets_s(temp, sizeof(temp)); //p_temp 포인터변수에 메모리 할당을 한다. p_..

#include #include #include typedef struct node { int data; struct node *p_next; }NODE; void push(NODE **p_head, NODE **p_tail, int data) { //**p_head : 노드의 시작 포인터 주소를 받는다. //**p_tail : 노드의 끝 포인터 주소를 받는다. push 작업을 할때 반복문을 사용하지 않고 //바로 추가하기 위해서 필요하다. //data : 추가하고자 하는 정보 //헤드포인터가 널이 아니라면 이는 이미 데이터가 하나 이상은 추가되었다는 의미다. if (*p_head != NULL) { //맨 마지막 노드의 다음 노드를 위한 공간을 확보한다. (*p_tail)->p_next = (NODE*..

#include #include typedef struct node { int data; struct node *p_next; }NODE; void push(NODE **p_head, NODE **p_tail, int data) { //**p_head : 노드의 시작 포인터 주소를 받는다. //**p_tail : 노드의 끝 포인터 주소를 받는다. push 작업을 할때 반복문을 사용하지 않고 //바로 추가하기 위해서 필요하다. //data : 추가하고자 하는 정보 //헤드포인터가 널이 아니라면 이는 이미 데이터가 하나 이상은 추가되었다는 의미다. if (*p_head != NULL) { //맨 마지막 노드의 다음 노드를 위한 공간을 확보한다. (*p_tail)->p_next = (NODE*)malloc(s..