일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 셀
- Windows API
- 구현
- 버블
- 배열
- string
- 난수
- C언어
- 이진탐색#binary_search
- Time
- 테트리스
- scanf
- 문자열
- 오목#함수#gotoxy#금수#알고리즘#2차원#배열#실무#프로젝트
- 삽입
- 커서
- 알고리즘
- 포인터
- 3차원 배열
- 연결리스트
- 콘솔
- 파일입출력
- 공백
- C
- 구조체
- crud
- 함수
- 선택
- 정렬
- Today
- Total
목록C언어 알고리즘 (8)
C언어 알고리즘 정리 및 실무 프로젝트

완전탐색 알고리즘 중에 하나인 순열 알고리즘입니다. C언어에서 재귀함수를 이용하여 구현했습니다. perm 함수 매개변수 설명 - char arr[] : 데이터를 담은 배열 - int depth: 교환작업이 일어나는 곳의 깊이 ( ex: A B C의 경우, A는 깊이 0, B는 깊이 1, C는 깊이 2 ) - int n: 배열 요소의 개수 swap 함수 매개변수 설명 - char[] arr: 데이터를 담은 배열 - int i: 배열 인덱스 i - int j: 배열 인덱스 j ****** 궁금하신 사항은 댓글에 적어주세요. ****** #include #include void perm(char[],int,int); // 깊이를 파고들면서 탐색 void swap(char[],int,int); // 위치를 바꿈..

데이터를 반으로 나눈 후, 중간 값을 이용해 특정 값을 탐색하는 알고리즘이다. 중간 값을 기준으로 작고 큶을 비교해야 하기 때문에 반드시 데이터가 정렬되어 있어야 한다. 추가 응용 방법(알고리즘을 공부하고 싶으신 분들은 다음 사례로 함수를 Customizing해보세요.) 1: 내림차순으로 정렬된 데이터에서도 값을 탐색하게 한다. 2: 특정 수가 아닌, boolean(탐색 여부) 또는 int(탐색하기 위해 반복된 횟수) 값을 리턴하게 한다. 3: 매개변수의 형태를 변경하여 이진 탐색을 구현 #include int binary_search(int[], int, int); // 매개변수: 탐색할 배열, 배열 요소의 개수, 찾으려는 수 // 리턴 값: 해당 수의 위치(인덱스) int main() { int a[..

초보자분들이 이해하시기에는 어려운 정렬 방법입니다. 이 블로그에 있는 (선택, 삽입, 버블, 셀 정렬)을 먼저 이해하신 뒤에 보시는 것을 추천드립니다. 장점: 다른 정렬방법보다 수행 속도가 빠르고 효율적이다. 단점: 퀵 정렬과 다르게 에 구현되어 있지 않아서 직접 코드를 짜야 하는 불편함이 있다. 사용 방법: merge_sort(원본 배열, 정렬되어 저장될 배열, 첫 번째 인덱스, 마지막 인덱스) void merge(int a[], int b[], int left, int right) {// 병합 (분할된 세트를 정렬하면서 합침.) int l = left;// 왼쪽 집합의 시작점 int mid = (left + right) / 2;// 왼쪽 집합의 마지막 지점 int j = mid + 1;// 오른쪽 집..

헤더 파일에 내장되어 있는 함수이지만, 포인터를 활용해보기 위해서 문자열 함수들을 직접 구현했습니다. 포인터에 대한 깊은 이해를 원하시는 분은 제 소스를 기반으로 본인만의 코드 스타일로 바꿔보시면 좋을 것 같습니다. 소스를 보시다가 scanf 함수 안에 ^'\n' 이라는 생소한 문법이 있습니다. 이것은 '개행문자를 만날 때까지 문자를 입력받겠다' 라는 뜻입니다. scanf 함수는 공백문자나 개행문자를 입력 받으면 입력이 종료되는 방식인데, ^'\n' 속성을 지정해주면 공백문자도 입력으로 취급해서 문자열에 공백 입력이 가능하게 됩니다. #define _CRT_SECURE_NO_WARNINGS #include #include void strcopy(char* origin, char* task) {// 문자열..

전체의 큰 for문 안에 각기 다른 조건 4개를 넣어줌으로써 기능별로 세분화해서 이해할 수 있도록 구성하였습니다. #include int main() { int count = 0; // 숫자 카운트 (V) int num[6][6]; // 달팽이 배열 int a = 1; // 가로 행 증가 변수 int b = 1; // 세로 열 증가 변수 int c = 1; // 가로 행 감소 변수 int d = 1; // 세로 열 감소 변수 for (int j = 1; j

#define _CRT_SECURE_NO_WARNINGS #include #include typedef int Data; typedef struct node { Data data; struct node* link; }node; node *insert_node(node* head, node* pre, Data data);// 노드 삽입 node *delete_node(node* head, node* pre, node * del);// 노드 삭제 void view_all(node * list);// 모든 노드 출력 void delete_all(node *list);// 모든 노드 삭제 int main() { Data data; node *list = NULL; while (1) { printf("데이터 입력..