Data Structure
-
- [C] ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Doubly Linked List)
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Doubly Linked List) ์์ฉ ํ๋ก๊ทธ๋จ์์์ ํน์ ๋ ธ๋์์ ์๋ฐฉํฅ์ผ๋ก ์์ ๋กญ๊ฒ ์์ง์ผ ์ ์๋ ๋ฆฌ์คํธ ๊ตฌ์กฐ ํ๋์ ๋ ธ๋๊ฐ ์ ํ ๋ ธ๋์ ํ์ ๋ ธ๋์ ๋ํ ๋ ๊ฐ์ ๋งํฌ๋ฅผ ๊ฐ์ง๋ ๋ฆฌ์คํธ ๋งํฌ๊ฐ ์๋ฐฉํฅ์ด๋ฏ๋ก ์๋ฐฉํฅ์ผ๋ก ๊ฒ์์ด ๊ฐ๋ฅํด์ง๋ค. ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์งํ๊ณ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค๋ ๋จ์ ์ด ์๋ค. ์ค์ ์์ฉ์์๋ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ํผํฉํ ํํ๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ค. ํค๋ ๋ ธ๋(Head Node)๋ผ๋ ํน๋ณํ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ํค๋ ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ ํน๋ณํ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. ํค๋ ํฌ์ธํฐ : ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ํค๋ ๋ ธ๋๊ฐ ์กด์ฌํ๋ฉด ์ฝ์ , ์ญ์ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐํธํด์ง๋ค. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์์ ๋ ธ๋๋ 3๊ฐ์ ํ๋(์ผ์ชฝ ๋งํฌ ํ๋,..
2022.07.12 -
- [C] ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List)
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List) ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฆฌ์คํธ ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ ํ๋๊ฐ NULL์ด ์๋ ์ฒซ ๋ฒ์งธ ๋ ธ๋ ์ฃผ์๊ฐ ๋๋ ๋ฆฌ์คํธ. ํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค. ๋ ธ๋์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ณด๋ค๋ ์ฉ์ดํด์ง๋ค. ์ญ์ ๋ ์ฝ์ ์์๋ ํญ์ ์ ํ ๋ ธ๋์ ํฌ์ธํฐ๊ฐ ํ์ํ๋ค. ๋ฆฌ์คํธ์ ๋์ ๋ ธ๋๋ฅผ ์ฝ์ ํ๋ ์ฐ์ฐ์ด ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ณด๋ค ํจ์จ์ ์ผ ์ ์๋ค. ์ฝ๋ #include #include typedef int element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; void error(char *message) ..
2022.07.12 -
- [C] ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List)
๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List) ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ ธ๋๋ค์ด ํ๋์ ๋งํฌ ํ๋๋ฅผ ๊ฐ์ง๋ฉฐ ์ด ๋งํฌ ํ๋๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ ธ๋๋ค์ด ์ฐ๊ฒฐ๋์ด ์๋ค. ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ ํ๋ ๊ฐ์ NULL์ด๋ค. ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ(ํค๋ ํฌ์ธํฐ) ๊ฐ๋ง ์๊ณ ์์ผ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์์ ๋ชจ๋ ๋ ธ๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ํ๋์ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋์ ํฌ์ธํฐ๋ง ์์ผ๋ฉด ์ถฉ๋ถํ๋ค. ํค๋ ํฌ์ธํฐ(Head Pointer) : ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์ฝ๋ #include #include typedef int element; typedef struct ListNode { element data; struct ListNode *link; } ListNode; void error(c..
2022.07.12 -
- [Python] ํ(Queue)
ํ(Queue) ํ(Queue) ์ ์ ์ ์ถ(First In First Out, FIFO)์ ํน์ง์ ๊ฐ๋ ์๋ฃ๊ตฌ์กฐ ํ๋ ์์ชฝ์ด ๋ซ๋ ค ์๋ ๊ตฌ์กฐ์ด๋ค. ํ์ชฝ์์๋ ์ฝ์ ๋ง ์งํ๋๊ณ , ๋ค๋ฅธ ์ชฝ์์๋ ์ถ์ถ๋ง ์งํ๋๋ค. ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๋์์ enQueue(์ธํ)๋ผ๊ณ ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋์์ deQueue(๋ฐํ)๋ผ๊ณ ํ๋ค. ํ์ ์ค์ํ ์ฉ์ด๋ก front(๋จธ๋ฆฌ)์ rear(๊ผฌ๋ฆฌ)๊ฐ ์๋ค. ๋จธ๋ฆฌ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ค ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๊ผฌ๋ฆฌ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ค ๋ง์ง๋ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ์์ front๊ฐ ๊ฐ๋ฆฌ์ผ์ผ ํ๋ค. ๋ฐ์ดํฐ ์ฝ์ : enQueue ๋ฐ์ดํฐ ์ถ์ถ : deQueue ๊ตฌํ โ ํ์ ์ด๊ธฐํ SIZE = 5 queue = [None for _ in range(SIZE)] fr..
2022.07.01 -
- [Python] ์คํ(Stack)
์คํ(Stack) ์คํ(Stack) ์ ์ ํ์ถ(First In Last Out, FILO) ๋๋ ํ์ ์ ์ถ(Last In First Out, LIFO)์ ํน์ง์ ๊ฐ๋ ์๋ฃ๊ตฌ์กฐ ์คํ์ ํ์ชฝ๋ง ๋ซ๋ ค ์๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์ฝ์ ๊ณผ ์ถ์ถ์ด ํ์ชฝ์์๋ง ์งํ๋๋ค. ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๋์์ push(ํธ์)๋ผ๊ณ ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋์์ pop(ํ)์ด๋ผ๊ณ ํ๋ค. ์คํ์์๋ top(ํฑ)์ด๋ผ๋ ์ฉ์ด๊ฐ ์ค์ํ๋ฐ, ํ์ฌ ์คํ์ ๋ค์ด ์๋ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ๋ ์ด๋ค. ๊ตฌํ โ ์คํ์ ์ด๊ธฐํ SIZE = 5 # ์คํ์ ํฌ๊ธฐ stack = [None for _ in range(SIZE)] top = -1 โก ๋ฐ์ดํฐ ์ฝ์ ์คํ์ด ๊ฝ ์ฐผ๋์ง ํ์ธํ๋ ํจ์ ๋จผ์ ์คํ์ด ๊ฝ ์ฐผ๋์ง ํ์ธํ ํ ์คํ์ ์ฌ์ ๊ณต๊ฐ์ด ์..
2022.07.01 -
- [Python] ์ด์ง ํ์(Binary Search)
์ด์ง ํ์(Binary Search) ์ด์ง ํ์ ์๋ฆฌ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์งํฉ์ ๊ฒ์ํ๋ ๊ฒฝ์ฐ์๋ ์ด์ง ํ์(Binary Search)์ ์ฃผ๋ก ์ฌ์ฉํ๋๋ฐ, ์์ฐจ ํ์์ ๋นํด์ ์์ฒญ๋ ์ฑ๋ฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค. ์ด์ง ํ์์ ์ ์ฒด๋ฅผ ๋ฐ์ฉ ์๋ผ๋ด์ ํ์ชฝ์ ๋ฒ๋ฆฌ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ๋ฐ์ดํฐ ๊ฐ์๊ฐ ๊ณ์ 1/2์ฉ๋ง ๋จ์ผ๋ฏ๋ก ๊ธ๊ฒฉํ ๋น๊ตํ ๋ฐ์ดํฐ ๊ฐ์๊ฐ ์ค์ด๋ ๋ค. ์ฐพ๋ ๊ฐ์ ๊ฒ์ํ๊ณ ์ 1๋จ๊ณ์์ ์ค์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๋๋ค. ์ฐพ๋ ๊ฐ์ด ์ผ์ชฝ ๊ตฌ์ญ์ ์์ ๊ฒฝ์ฐ, ์ค๋ฅธ์ชฝ ๊ตฌ์ญ์ ๋ฒ๋ฆฐ๋ค. ์ด ๊ณผ์ ์ ์ฐพ์ ๊ฐ์ ์ฐพ์ ๋๊น์ง ๋ฐ๋ณตํ๋ค. ๊ตฌํ ์ด์ง ํ์ ๊ตฌํ์ ํค๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ณ์ ์์, ์ค์, ๋์ ๋ฐ๋ณต์ ์ผ๋ก 1/2์ฉ ์ค์ฌ ๊ฐ๋ฉด์ ๊ณ์ฐํ๋ ๋ฐฉ์์ด๋ค. ๊ฒ์ํ ๋ฒ์๋ฅผ 1/2์ฉ ๋ฐ๋ณตํด์ ๋ถํ ํ๋ ๊ธฐ๋ฒ์ ๋ถํ ์ ๋ณต(Divide ..
2022.06.29 -
- [Python] ์์ฐจ ํ์(Sequential Search)
์์ฐจ ํ์(Sequential Search) ์์ฐจ ํ์ ์ด๋ค ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋์ง ์์ ์ํ๋ก ์กด์ฌํ๊ณ , ์ด๋ค ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋ ์ํ๋ก ์กด์ฌํ๋ค. ์ด ๋ ๊ฒฝ์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์กฐ๊ธ ๋ค๋ฅด๋ค. โ ์ ๋ ฌ๋์ง ์์ ์งํฉ์์์ ์์ฐจ ํ์ ๊ฒ์ ์ฑ๊ณต ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ถํฐ ์ฐจ๋ก๋ก ๋น๊ตํด์ ์ฐพ์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋ฐํํ๋ค. ๊ฒ์ ์คํจ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ถํฐ ์ฐจ๋ก๋ก ๋น๊ตํด์ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ, -1 ์์น๋ฅผ ์ฐพ์๋ค๊ณ ๋ฐํํด์ ๊ฒ์์ ์คํจํ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ค. def seqSearch(ary, fData) : pos = -1 size = len(ary) print('## ๋น๊ตํ ๋ฐ์ดํฐ ==> ', end = '') for i in range(size) : print(ary[i], end = ' ') if ary[i] == fData..
2022.06.29 -
- [Python] ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List)
์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List) ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List) ๋๊น์ง ๋ฐฉ๋ฌธํ ํ์๋ ๋ ์ด์ ๋ฐฉ๋ฌธํ ๊ณณ์ด ์์ด ์ข ๋ฃ๋๋ฏ๋ก ๋ค์ ๋ฐฉ๋ฌธํ๋ ค๋ฉด ํค๋(head)๋ถํฐ ์ฌ์์ํด์ผ ํ๋ค. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List)๋ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋๊ฐ ๋ค์ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ค์ ๋์ด ๋ฆฌ์คํธ ํํ๊ฐ ์(Circle) ํํ๋ก ๊ตฌ์ฑ๋๋ค. ์์ ์์น์ ๋ค์ ์์น๊ฐ ๊ณ์ ์ด์ด์ง ํ, ๋ง์ง๋ง์ ๋ค์ ์์ ์์น๋ก ๋์์ค๋ ํํ ์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ ์ฝ์ ์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ฆฌ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์๋ฆฌ ๋ฐ ๊ตฌ์กฐ๋ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ ๋ถ๋ถ์ด ๋น์ทํ๋ค...
2022.06.22 -
- [Python] ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List)
๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List) ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋ ์ ํ ๋ฆฌ์คํธ(Linear List) ์ฅ์ ๋ฐฐ์ด์ ๊ตฌ์ฑํ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ๋ค. ๋ฌผ๋ฆฌ์ ์ธ ์์์ ๋ ผ๋ฆฌ์ ์ธ ์์๊ฐ ๋์ผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ๊ฐ๋จํ๋ค. ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌํํ๊ธฐ ๋น๊ต์ ์ฝ๋ค. ๋จ์ : ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ๋ ๋ง์ ์์ ์ด ํ์ํ๋ค. ์) 100๋ง ๊ฐ์ธ ์ ํ ๋ฆฌ์คํธ์ ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ์ฝ์ ํ๋ ค๋ฉด ์ฝ 100๋ง ๊ฐ๋ฅผ ๋ค๋ก ์ด๋์ํค๋ ์์ ์ ํด์ผ ํ๋ค. (์ค๋ฒํค๋(Overhead) ๋ฐ์) ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List) ์ ํ ๋ฆฌ์คํธ(Linear List)์ ๋ฌ๋ฆฌ, ์ ์ฅ๋ ๋ ธ๋๋ค์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋จ์ด์ง ๊ณณ์ ์์นํ๋ค. ๊ฐ ๋ ธ๋์ ๋ฒ์ง๋ 100, 200, 130 ๋ฑ์ผ๋ก ์์ฐจ์ ์ด์ง ์๋ค. ๋ฐ์ดํฐ์ ๋งํฌ๋ก ๊ตฌ..
2022.06.22 -
- [Python] ์ ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linear Linked List)
์ ํ ๋ฆฌ์คํธ(Linear Linked List) ์ ํ ๋ฆฌ์คํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์ ํ ์์๋ก ๋์ดํ ๊ตฌ์กฐ ์์ฐจ ๋ฆฌ์คํธ(Ordered List)๋ผ๊ณ ๋ ํ๋ค. ์ ๋ ฅ ์์๋๋ก ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ํด๋นํ๋ค. ์ ํ ๋ฆฌ์คํธ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์์ง๋ง, ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด ์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ์ ํ ๋ฆฌ์คํธ๋ ๋ฉ๋ชจ๋ฆฌ์์๋ ์ฐจ๋ก๋ก ์ ์ฅ๋๋ค. ์๋ฆฌ ๋ฐ์ดํฐ ์ฝ์ 1๋จ๊ณ : ๋งจ ๋์ ๋น์นธ์ ํ๋ณดํ๋ค. 2๋จ๊ณ : ์ฝ์ ํ๊ณ ์ ํ๋ ๊ณต๊ฐ์ ๋น์นธ์ด ์์ผ๋ฏ๋ก, ์ฝ์ ํ๊ณ ์ ํ๋ ๊ณต๊ฐ ๋ค์ ์๋ ์์๋ค์ ํ์นธ์ฉ ๋ค๋ก ์ฎ๊ธด๋ค. 3๋จ๊ณ : ๋น์๋ฆฌ์ ์์๋ฅผ ์ฝ์ ํ๋ค. ๋ฐ์ดํฐ ์ญ์ ์ํ๋ ์์๊ฐ ์ญ์ ๋ ํ ๋น์นธ์ ๊ทธ๋๋ก ๋์ง ์๊ณ ๋ค์ ์์๋ค์ ์์ผ๋ก ํ์นธ์ฉ ์ด๋์ํจ๋ค. ์ ํ ๋ฆฌ์คํธ์ ๊ตฌํ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก..
2022.06.22