전체 글 썸네일형 리스트형 머지소트(merge sort) Merge sort은 'divide and conquer(분할정복)'의 대표적인 알고리즘이다. 분할 정복 알고리즘(Divide and conquer algorithm)은 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘이다. (출처: https://ko.wikipedia.org/wiki/%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 분할 정복 알고리즘 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 분할 정복 알고리즘(Divide and conquer algorithm)은 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘이다... 더보기 배열이용하여 Hash 사용하기(feat. 코딩테스트) 배열을 이용하여 memory 를 잡아준 뒤, Single Linked List로 hash를 사용하는 코드이다. #define MAX_TABLE_SIZE 1000 typedef struct Node { char data[5]; struct Node *prev; } Node; Node a[MAX_TABLE_SIZE]; Node *hashTable[MAX_TABLE_SIZE]; int arr_idx = 0; unsigned long myHash(const char *str) { unsigned long hash = 5381; int c; while (c = *str++) hash = (hash * 7 * c) % MAX_TABLE_SIZE; return hash; } Node* myAlloc(void) { r.. 더보기 동적할당 대신 배열을 사용해 시간 줄이기(feat. 코딩테스트) 코등테스트 문제를 풀 시에, 동적할당 대신 배열을 사용함으로써 시간을 save할 수 있는 방법. int arr_idx = 0; typedef struct Node { int value; } Node; #define MAX_SIZE1000 Node a[MAX_SIZE]; Node *myAlloc(void) { return &a[arr_idx++]; } int main(void) { ... } 위와 같이 필요한 순간에 마다 malloc() 함수를 통해 공간을 할당받는 것이 아니라, 필요한 만큼의 size를 미리 잡아두고(compile time에) 필요할 때마다 myAlloc() 함수를 통해 미리 잡아둔 메모리 공간의 주소를 얻어오는 방식으로 시간을 save할 수 있다. 매 case가 시작될 때마다 'arr_.. 더보기 이전 1 2 3 4 5 6 ··· 11 다음