๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 42

ํ€ต ์ •๋ ฌ

ํ€ต์ •๋ ฌ์€ “๋ถ„ํ• ์ •๋ณต์—” ๊ทผ๊ฑฐํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ์ •๋ ฌ ๋ฐฉ๋ฒ•์ด๋‹ค. https://akdl911215.tistory.com/386 ํ€ต์ •๋ ฌ ์šฉ์–ด ์ •๋ฆฌ left: ์ •๋ ฌ ๋Œ€์ƒ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์ง€์ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ด๋ฆ„ right: ์ •๋ ฌ ๋Œ€์ƒ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ง€์ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ด๋ฆ„ pivot: ์ค‘์‹ฌ์ถ•์˜ ์˜๋ฏธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ฆ‰ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ผ์ข…์˜ ๊ธฐ์ค€์ด๋‹ค. low: ํ”ผ๋ฒ—์„ ์ œ์™ธํ•œ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ์ง€์ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ด๋ฆ„ high: ํ”ผ๋ฒ—์„ ์ œ์™ธํ•œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์ง€์ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ด๋ฆ„ ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋ณด์ด๋“ฏ low๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ, high๋Š” ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด ๋•Œ ์ด๋™์˜ ๊ธฐ์ค€์€ low์˜ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ : ํ”ผ๋ฒ— ๋ณด๋‹ค ์ •๋ ฌ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€. high์˜ ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™: ํ”ผ๋ฒ—์˜ ์ •๋ ฌ์˜ ์šฐ์„ ์ˆœ์˜๊ฐ€ ๋†’..

๋ณ‘ํ•ฉ ์ •๋ ฌ

๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ๋ง๊ทธ๋Œ€๋กœ “๋ถ„ํ• ”ํ•˜์—ฌ “์ •๋ณต” ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋‹จ๊ณ„ (๋ถ„ํ• ) ํ•ด๊ฒฐ์ด ์šฉ์ดํ•œ ๋‹จ๊ณ„๊นŒ์ง€ ๋ถ„ํ• ํ•ด ๋‚˜๊ฐ„๋‹ค. 2๋‹จ๊ณ„ (์ •๋ณต) ํ•ด๊ฒฐ์ด ์šฉ์ดํ•œ ์ˆ˜์ค€๊นŒ์ง€ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. 3๋‹จ๊ณ„ (๊ฒฐํ•ฉ) ๋ถ„ํ• ํ•ด์„œ ํ•ด๊ฒฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ •๋ ฌํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค, ์ด๋ฅผ ๋‘˜๋กœ๋‚˜๋ˆ  4๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๊ณ , ๋˜ ์ด๋“ค ๊ฐ๊ฐ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋‘˜๋กœ ๋‚˜๋ˆ ์„œ 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๋‹ค. https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html code #include #include void MergeTwoArea(int arr[], int left, int mid, int right) { int fIdx = ..

BFS ๊ตฌํ˜„

BFS ๊ฐœ๋…: https://yongdeok.tistory.com/entry/%EA%B7%B8%EB%9E%98%ED%94%84 DFS๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. compile with CircularQueue → https://yongdeok.tistory.com/7 LinkedList → https://yongdeok.tistory.com/3 Bfs.c void BFShowGraphVertex(ALGraph *pg, int startV) { Queue queue; int visitV = startV; int nextV; QueueInit(&queue); VisitVertex(pg, visitV); while (LFirst(&(pg->adjList[visitV]), &nextV) == ..

DFS ๊ตฌํ˜„

DFS ๊ฐœ๋…: https://yongdeok.tistory.com/entry/%EA%B7%B8%EB%9E%98%ED%94%84 ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ์ง€ ์•Š์œผ๋ฉด ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค. compile with Stack.c→https://yongdeok.tistory.com/6 LinkedList.c → https://yongdeok.tistory.com/3 Graph.h #ifndef __AL_GRAPH_H__ #define __AL_GRAPH_H__ #include "DLinkedList.h" enum {A, B, C, D, E, F, G, H, I, J}; typedef struct _ual { int numV; // ๋…ธ๋“œ ๊ฐฏ์ˆ˜ int numE; // ๊ฐ„์„  ๊ฐฏ์ˆ˜..

ํ…Œ์ด๋ธ”๊ณผ ํ•ด์‰ฌ ๊ฐœ๋…

ํ…Œ์ด๋ธ”์€ ์‚ฌ์ „๊ณผ ๊ฐ™์ด ๋‹จ์–ด๋ฅผ ํ†ตํ•ด ์˜๋ฏธ๋ฅผ ์ฐพ๋Š” ํ–‰์œ„์™€ ๋น„์Šทํ•˜๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์˜๋ฏธ๋ฅผ ์•Œ์ˆ˜ ์žˆ๋“ฏ, ํ…Œ์ด๋ธ” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋‚ด๊ฐ€ ๊ฐ€์ง„ ํ‚ค๋ฅผ ํ™œ์šฉํ•ด ๊ฐ’์„ ๋„ฃ๊ณ  ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. “์ €์žฅ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ‚ค์™€ ๊ฐ’์ด ํ•˜๋‚˜์˜ ์Œ์„ ์ด๋ฃฌ๋‹ค” ์ด๋ ‡๋“ฏ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์€ ํ‚ค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ‚ค๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค. StuInfo stuInfoArr[1000]; StuInfo student; int stuNum; printf("ํ•™๋ฒˆ๊ณผ ๋‚˜์ด ์ž…๋ ฅ: "); scanf("%d %d", &(student.stuEmp), &(student.age)); stuInfoArr[student.stuEmp] = student; ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๊ณ ์œ ํ•œ ํ•™์ƒ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ํ•™์ƒ์˜..

ํž™ ๊ฐœ๋…

ํž™์˜ ์ถ”์ƒ์ž๋ฃŒํ˜• void HeapInit(Heap *ph, PriorityComp pc) ์ดˆ๊ธฐํ™”ํ•  ํž™ ์ฃผ์†Œ ๊ฐ’์„ ์ธ์ž๋กœ ์ „๋‹ฌ ํ•ด์•ผํ•œ๋‹ค. ํž™ ์ƒ์„ฑ ํ›„ ์ œ์ผ ๋จผ์ € ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํž™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•  ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค. void HInsert(Heap *ph, HData data); ํž™์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ data๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. HData HDelete(Heap *ph); ์ €์žฅ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ์•ž์„  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜ํ™˜๋œ๋‹ค. ๋ณธ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•จ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค. ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฉด์„œ ์–ด๋А ์œ„์น˜์—์„œ๋„ ๋‹ค์Œ ์‹์ด ์„ฑ๋ฆฝํ•œ๋‹ค. ์ž์‹ ๋…ธ๋“œ ๋ฐ์ดํ„ฐ์˜ ์šฐ์„ ์ˆœ์œ„ ≤ ๋ถ€๋ชจ๋…ธ๋“œ ๋ฐ์ดํ„ฐ์˜ ์šฐ์„ ์ˆœ์œ„ ํž™์˜ ์ €์žฅ๊ณผ์ • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์˜ ์šฐ์„ ์ˆœ์œ„..

ํŠธ๋ฆฌ ๊ฐœ๋… ๋ฐ ๊ตฌํ˜„

ํŠธ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋‹ค๋ฅด๊ฒŒ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํŠธ๋ฆฌ๋Š” ๊ฐ€์ง€๋ฅผ ๋ป—์–ด ๋‚˜์•„๊ฐ„๋‹ค. ํŠธ๋ฆฌ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜• BTreeNode *MakeBtreeNode(void); ์ด์ง„ ํŠธ๋ฆฌ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. BTData GetData(BTreeNode *bt); ๋…ธ๋“œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. void SetData(BTreeNode *bt, BTData data); ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. data๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. BTreeNode *GetLeftSubTree(BTreeNode *bt); ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. BTreeNode *GetRIghtSubTree(BTreeNode *bt); ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. void MakeLeftSubTree(BTreeN..

ํ ๊ฐœ๋…

ํ์˜ ์ถ”์ƒ์ž๋ฃŒํ˜• void QueueInit(Queue *pq) ํ์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ํ ์ƒ์„ฑํ›„ ์ œ์ผ ๋จผ์ € ํ˜ธ์ถœ ๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. int QIsEmpty(Queue *pq) ํ๊ฐ€ ๋นˆ ๊ฒฝ์šฐ 1, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. void Enqueue(Queue *pq, Data data) ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ data๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. Data Dequeue(Queue *pq) ์ €์žฅ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ์•ž์„  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜ํ™˜๋œ๋‹ค. ๋ณธ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•จ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค. Data QPeek(Queue *pq) ์ €์žฅ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ์•ž์„  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋˜ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ณธ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•จ์ด ๋ณด์žฅ๋˜์–ด์•ผํ•œ..

์Šคํƒ ๊ฐœ๋…

์Šคํƒ ์ถ”์ƒ ์ž๋ฃŒํ˜• void StackInit(Stack *pstack) ์Šคํƒ์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์Šคํƒ ์ƒ์„ฑ ํ›„ ์ œ์ผ ๋จผ์ € ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. int SIsEmpty(Stack *pstack) ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜ ์Šคํƒ์ด ๋น„์–ด์žˆ์„์‹œ 1, ๋น„์–ด์žˆ์ง€ ์•Š์„์‹œ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค void SPush(Stack *pstack, Data data) ์Šคํƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค Data SPop(Stack *pstack) ์Šคํƒ์˜ ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค(๋งˆ์ง€๋ง‰ ์š”์†Œ). ์‚ญ์ œํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Data SPeek(Stack *pstack) ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋˜ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. void SPush(Stack *pstack, Data data) ์Šคํƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค Data SPop(Stack *p..

์ž๋ฃŒ ๊ตฌ์กฐ ์ด ์ •๋ฆฌ

์ž๋ฃŒ๊ตฌ์กฐ์—๋Œ€ํ•œ ์ •๋ณด๋Š” ์œค์„ฑ์šฐ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€ํ•˜์—ฌ ๊ตฌํ˜„ ํ•˜์˜€๋‹ค!. ๋งŽ์€ ๋„์„œ๋ฅผ ์ ‘ํ•ด ๋ณธ๊ฒƒ์€ ์•„๋‹ˆ๋‚˜ ์ •๋ง ์‰ฝ๊ณ  ์ดํ•ด ํ•˜๊ธฐ ์ข‹๊ฒŒ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ๋†“์€ ์ฑ…!. ์ž์‹ ์ด ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ง€์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์ด ์ฑ…์œผ๋กœ ์‹œ์ž‘ํ•ด ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ „์ฒด ์ •๋ฆฌ: https://boiling-fowl-6d6.notion.site/c-397b56a504c444838b93d2967831506f