본문 바로가기

전체 글112

kruskal algorithm[c] #define _CRT_SECURE_NO_WARNINGS #include #include #include #define EDGE_MAX_SIZE 100 typedef struct _EDGE_ { int node1; int node2; int distance; }EDGE; int Edge(EDGE* graph, int x, int y, int d) { static int i = 0; graph[i].node1 = x; graph[i].node2 = y; graph[i].distance = d; i++; } void Sort(EDGE* graph, int size) { int i,j; for (i = 1; i .. 2023. 7. 31.
top k frequent elements #leetcode 347 숫자 대신 단어들로 구현하였다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include "function.h" #define STRING_SIZE 100 int main() { BUCKET* hash = (BUCKET*)calloc(ALPHABET_SIZE, sizeof(BUCKET)); assert(hash != NULL); HeapType* heap = (HeapType*)calloc(1, sizeof(HeapType)); assert(heap != NULL); int NumOfWords; char* sep = NULL; char* str = NULL; int len; printf("단어들을 입.. 2023. 7. 25.
[C] 연결리스트 큐 이용한 기수정렬 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define TRUE 1 #define FALSE 0 typedef struct _QUEUE_NODE_ { int data; struct _QUEUE_NODE_* link; }QUEUE_NODE; typedef struct _Q_TYPE_ { QUEUE_NODE* front; QUEUE_NODE* rear; }Q_TYPE; int MaxDigit(int* arr, int size) { int i; int max = arr[0]; for (i = 0; i < size; i++) { if (max < arr[i]) { max = arr[i]; } } int cnt = 0; while (max != 0).. 2023. 7. 25.
이진검색(Binary search) 전제조건 : 데이터들이 정렬되어있어야함 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include void generate(int* ptr, int mod, int size) { int i; srand((unsigned int)time(NULL)); for (i = 0; i < size; i++) { ptr[i] = rand() % mod + 1; } } void PrintArray(int* ptr, int size) { int i; for (i = 0; i < size; i++) { printf("%d ", ptr[i]); } } void Sort(int* ptr, int size) { int key; int i, j; //삽입정렬 for .. 2023. 6. 27.
보초법(sentinel method) #define _CRT_SECURE_NO_WARNINGS #include #include #include #include void generate(int* ptr, int size, int mod) { srand((unsigned int)time(NULL)); int i; for (i = 0; i < size; i++) { ptr[i] = rand() % mod + 1; } } void PrintArr(int* ptr, int size) { int i; printf("생성한 배열 원소 출력\n"); for (i = 0; i < size; i++) { printf("%d ", ptr[i]); } } int Search(int* ptr, int num, int size) { ptr[size] = num; i.. 2023. 6. 27.
Dynamic-programming(동적기획법) : Dynamic-programming 알고리즘을 사용하는 대표적인 예로는 피보나치 수열이 있다 (1) dynamic-programming(top-down, memoization) 피보나치 수열을 구현하는 방법은 순환 호출과 반복문을 사용하는 방법이 있는데 순환 호출을 사용할 경우 예를 들어 int fibo(int num)이라는 함수를 호출하게 되면 같은 함수를 중복해서 호출하는 경우가 생기기에 비효율적이다. ex) fibo(6) fibo(6) fibo(4) fibo(5) fibo(2) fibo(3) fibo(3) fibo(4) fib(2) fibo(3) fibo(1) fibo(2) fibo(1) fibo(2) fibo(2) fibo(3) => 중복호출되는 함수들이 존재 => num값이 커질수록 중복현상.. 2023. 6. 8.