Data Structures
Last updated
Was this helpful?
Last updated
Was this helpful?
์๋ฃ๋ฅผ ๋ค๋ฃฐ๋ ์ฌ์ฉํ๋ ํน์ ํํ - ์ด๋ค ์ํฉ์ด ๊ฐ์ฅ ์ ํฉํ์ง ์ฐพ๋๋ค๋ฉด ์ต์ ํ๋ ์ฝ๋๋ฅผ ์งค ์ ์๋ค. ์ธ์ด์ ๊ตญํ๋์ง ์๊ณ ๋ณด์ฅ๋์ด ์๋ค.
Big O๋ฅผ ํญ์ ์๊ฐํ๊ณ ์ฝ๋์์ ๊ตฌ๋ถํ๋ค.
[stack](Stack-(Last-In First-Out))
[Queue](Queue (First-In First-Out))
์๋ฃ๋ฅผ ์ถ๊ฐํ๋ค๊ฐ ๋บ๋ค๊ฐ ํ๋ค. ๋งจ ๋ง์ง๋ง์ผ๋ก ๋ค์ด๊ฐ๊ฒ ์ฒซ๋ฒ์งธ๋ก ๋์จ๋ค. - Last-In First-Out
Push: ์๋ฃ๋ฅผ ์ถ๊ฐ๋ฅผ ํ๋ค. ์ฑ ์ ์์๊ฐ๋ ๋ฐฉ์์ผ๋ก ํ๋ํ๋ ์์ธ๋ค๊ณ ์๊ฐํ์
Pop: ์๋ฃ๋ฅผ ๋บ๋ค. - ์์ธ ์ฑ ์ด ์ฐ๋ฌ์ง์ง ์๋๋ก ์์์๋ถํฐ ๋นผ๋ธ๋ค.
์ํ์ ์ธ ํ๊ธฐ๋ฒ์ ๋งํ๋ค. Big O๋ ํ๊ธฐ๋ฒ์ ํ๋๋ก ์๊ฐ,๊ณต๊ฐ์ ๋ณต์ก๋๋ฅผ ์ค๋ช ํด์ค๋ค.
Time Complexity
Big O
์ค๋ช
Insertion
O(1)
๊ดํธ์ 1์ ์์๋ฅผ ๋งํ๋ค. ํญ์ 1์ด๋ค. ์๊ฐ์ ์ธ ์์๊ฐ ํญ์ ๊ฐ๋ค. ์ฌ๋ฆฌ๋ฉด ๋, ๊ทธ ์ธ์ ๊ณ ๋ คํ ์ฌํญ์ด ์ ํ์๋ค. ์ฐ์ฐ์ ํ ํ ์ฌ๋ฆฌ๋๊ฒ ์๋๋ค. ์ฌ๋ฆฌ๋๊ฒ ํญ์ ๋์ผํ ์๊ฐ์ด ์์๋๋ค.
Deletion
O(1)
์ ๊ฑฐํ๋๊ฑฐ ์ธ์ ๋ค๋ฅธ ์ฌํญ์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค.
Search
O(n)
n์ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. stack์ ์ฌ์ด์ฆ. ์ด๋์ ์๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ทํจ์
Undo/Rodo Mechanism - ์๋ํฐ๋ฅผ ์ฌ์ฉํ์ ๋๋ฅผ ์์๋ก ๋ค ์ ์๋ค.
Backwards/Forwards Mechanism of Browsers
Call Stack
matching Brackets ์๊ณ ๋ฆฌ์ฆ - {}() ์ด๋ฐ์์ ์ง์ด ๋ง๋์ง์ ๋ํ ์๊ณ ๋ฆฌ์ฆ
์ฌ๋๋ค์ด ์ค์๋๊ฑฐ๋ ๋น์ทํ๋ค.
Enqueue: ์์์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์์ธ๋ค.
Dequeue: ์์์ ๋ถํฐ ์ฐจ๋ก๋๋ก ๋น ์ง๋ค.
๋ณ์๊ฐ ์๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋๋ฅผ ํํํ๋ค. ์ด๋์ ๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋์ง, ๊ณต๊ฐ์ ๋ฐ์ง๋๋ ์ด๋ค.
Time Complexity
Big O
์ค๋ช
Insertion
O(1)
๋ณ์๊ฐ ์๋ค.
Deletion
O(1)
์ค๊ฐ์ ์๋๊ฑธ ์ญ์ ํ๋ค ํด๋ ์ฐพ๋๊ฑฐ๋ ์ ๊ฑฐํ๋๊ฑฐ๋ ๊ฐ์ดํ๋ค. ํ์ง๋ง ์ ๊ฑฐ๋ง ์๊ฐํ๋ค.
Search
O(n)
n์ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. stack์ ์ฌ์ด์ฆ
Life of people standing for food
Callback queue
next๋ฅผ ์ธ์งํ๊ณ ์๋ค.
์ค์ง ๋ด ๋ค์ ๋๊ฐ ์๋์ง ์ธ์ง ํ๋ค.
์คํํ๋ ์ธ์งํ์ง ์๋๋ค.
๋งจ ์ฒซ๋ฒ์งธ๋ head๊ณ ๋งจ ๋ง์ง๋ง์ tail์ด๋ผ ๋ถ๋ฅธ๋ค.
๋ฐฐ์ด๊ณผ ๋ค๋ฅด๋ค.
์ฐ๊ฒฐ๋์ด ์๋ค.
Time Complexity
Big O
์ค๋ช
Insertion
O(1)
์ด๋ค ์๋ฆฌ์ ๊ฝ๋ ์์ ๊ผฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ค์ ๊ผฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ค.
Deletion
O(1)
์ญ์ ํ ํ ์์ ๊ผฌ๋ฆฌ์ ๋ค์ ๊ผฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ค.
Search
O(n)
์์์๋ถํฐ ์์ํ๋ค. next๋ฅผ ๊ธฐ์ตํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
The history section of web browers
Line of people standing for food
์ฐจ์ด
Array
Linked List
์ ๊ทผ
index๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์ ๊ทผ
Array๋ณด๋ค ๋๋ฆฌ๋ค.
์ฝ์ ์ญ์
๋๋ฆฌ๋ค
๋น ๋ฆ
ํฌ๊ธฐ
๊ณ ์
์ ๋์
๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ
์ธ๋ฑ์ค์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ ๋ค.
์ด์ ๊ณผ ๋ค์์ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
์ฅ์
๋์ ํฌ๊ธฐ
๊ฐํธํ ์ฝ์ /์ญ์ (๋ฐฐ์ด์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ cost๊ฐ ๋ง์ด ๋ ๋ค.)
๋จ์
์์ฐจ์ ์ผ๋ก ์์ธ์ค ํด์ผํ๋ค.
๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ตฌ๋๋ค.
๋ถ๋ชจ ์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.
๊ณ์ธต์ด๊ณ ๊ทธ๋ฃน์ ๊ฐ์ง๋ค.
node๋ ํ๋ ์ด์์ child๋ฅผ ๊ฐ์ง๋ค.
๋ถ๋ชจ๋ฅผ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์์๋ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
ํน์ ํ ์์๊ฐ ์์ ์๋ ์์ ์๋ ์๋ค.
์์์ ์ Root๋ผ๊ณ ํ๋ค.
๋์ด์ ์์์ด ์๋ ๊ฒฝ์ฐ leap ์์ฌ๊ท๋ผ ๋ถ๋ฅธ๋ค.
ํ๋์ ๊ตฌ์ฑ์์ (์ด๋์๋ ์ง ์ฐ์ผ ์ ์๋ค.)
Binary Tree(์ด์งํธ๋ฆฌ): ์์์ ๋๊ฐ๊น์ง ๊ฐ๋๋ค.
Ternary Tree: ์ธ๊ฐ
Binary Search Tree(์ด์ง๊ฒ์ํธ๋ฆฌ):
์์์ ์ต๋ ๋๊ฐ๊น์ง ๊ฐ์ง ์ ์๋ค.
์ผ์ชฝ์์๋ ธ๋๋ ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ์์์ผ ํ๊ณ ์ค๋ฅธ์ชฝ์์๋ ธ๋๋ ์ปค์ผํ๋ค.
์ผ์ชฝ๋ถํฐ ์ฑ์๋๊ฐ๋ค.
Perfect Binary Tree: ์๋ฒฝ์ฐ
ํ์ฌ๋ ์ ๋ถ์ ์กฐ์ง ๊ตฌ์กฐ
๋๋ผ, ์ง๋ฐฉ, ์โข๊ตฐ๋ณ, ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ์ ์ ์ฅ
์ปดํจํฐ ํ์ผ ์์คํ ๊ณผ ๊ฐ์ด ๊ณ์ธต์ ํ์ฑํ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ
DOM
File System
Hierarchical Data(๊ณ์ธต๊ตฌ์กฐ)๊ฐ ํน์ง์ด๋ค.
Time Complexity
Big O
์ค๋ช
Insertion
O(log(n))
๋ฐ๋ฐ๋ฐ๋ฐ๋ฐ ์๋ผ๋๊ฐ๋ฉด์ ์ฐพ๋๋ค.
Deletion
O(log(n))
Search
O(log(n))
ํธ๋ฆฌ๋ ์ ์ฒด๊ฐ ์ ๊ธฐ์ฒด๋ผ ์๋ก ๋ผ๋์ ์ ์๋ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ o(log(n));
์ญ์ ํ ๋ ๋ฃจํธ์ ๊ณ์ ๊ฐ์ ๋น๊ตํด์ผํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ ๊ธฐ์ฒด๋ผ๊ณ ํ ์ ์๋ ๊ฒ์ด๋ค.
Time Complexity
Big O
Insertion
O(n)
Deletion
O(n)
Search
O(n)
ํธ๋ฆฌ๊ฐ ์์ชฝ์ผ๋ก ๋๋์ด์ ธ ์๋๊ฒ ์๋๋ผ ์ผ๋ ฌ๊ณผ ๋น์ทํ ๋ชจ์์ ๊ฐ์ง๋์ด๋ค.
์์๊ฐ ์๋ ์๋ฃ - ํค ์์
AVL Tree, Red Black Tree(trie) - ํ์ชฝ์ผ๋ก๋ง ์ ๋ฆฌ๋ ์ํฉ์ ํผํ ์ ์๋ค. self-balancing์ ๊ฐ์ง๊ณ ์๋ค.
binary tree - ์์์ ๋๊ฐ ๊น์ง ๊ฐ๋๋ค.
binary search tree - ์ผ์ชฝ์ด ์์๊ฐ, ์ค๋ฅธ์ชฝ์ด ํฐ ๊ฐ์ ๊ฐ๋๋ค.
์์๊ฐ ์๋ค. ์ค์ง ์๋ฃ๊ฐ ์๋ ์๋๋ง ์ค์ํ๋ค.
์งํฉ์ด๋ฏ๋ก ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
์ค๋ณต๋์ง ์์ ์ซ์(๋ฐ์ดํฐ)๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
๋น ๋ฅธ ์๋
ํ๋ฃจ ์ ์์ ์นด์ดํธ - ์ค๋ณต๋ ip๋ ์ญ์ ํ๋ค.
Extrememly Important - ๊ฐ์ฅ ์ค์ํ ๊ฒ ์ค์ ํ๋๋ค.
hsah Table ํจ์(F(key))๋ฅผ ๋ฃ๊ณ ๋ฐํ ๋ฐ์๊ฒ์ด HashCode
HashCode๋ฅผ ์ ์ฅ์์ Index๋ก ํ์ฐ์ ํด์ ->
๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
key: ๋ฌธ์๋ ํ์ผ๋ฐ์ดํฐ๋ ์ซ์ ๋ฑ์ด ๋ ์ ์๋ค.
์ฌ์ ๋ฆฌ
๋ฐ์ดํฐ๊ฐ ์๋ค.
ํด์ ํจ์๋ฅผ ํตํด ํจ์์์ ๊ท์น,์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ์ดํฐ๋ค์ Hash Code๋ฅผ ๊ฐ๋๋ค.
ํด์์ฝ๋๋ index๊ฐ ๋์ด ์๋ฃ๋ฅผ ์ฐพ๋๋ค.
key ๊ฐ์ด ์ผ๋ง๋ ํฐ์ง ์๊ด์์ด ๋์ผํ HashCode๋ก ๋ง๋ค์ด ์ค๋ค.
๋ชจ๋ ์ฌ๋๋ค์ด ๋ชจ๋ ๊ฑฐ๋์ฅ๋ถ๋ฅผ ๋ค ๊ฐ๊ณ ์๋ค. ๊ทธ๊ฑด ๋๋ฌด ํฌ๊ธฐ๋๋ฌธ์ HashCode๋ก ๊ฐ์ง๊ณ ์๋๋ค.
Hash Algorithm
๋ฐฉ์ ๋๋๋ ๋ ธ๋ ๋ฐฉ์ด ์๋๋ก ๋ฐฉ์ ์ ๋ง๋ค์ด์ผ ํ๋ค.
์๋ก๋ค๋ฅธ key๊ฐ์ผ๋ก ๋์ผํ hashcode๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋ค. ์๋๋ฉด hashcode๋ ์ ํํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ค๋ฅธ ์ฝ๋์ง๋ง ๊ฐ์ index๋ฐฉ์ ๋ฐ์ ์ ์๋ค.
์ฅ์
๊ฒ์์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
ํด์ํจ์๋ฅผ ์ด์ฉํด์ ๋ง๋ ํด์์ฝ๋๋ ์ ์๋ค. ๋ฐฐ์ด๊ณต๊ฐ์ ๊ณ ์ ๋ ํฌ๊ธฐ๋งํผ ๋ง๋ ๋ค. ํด์์ฝ๋๋ฅผ ๋ฐฐ์ด์ ๋๋จธ์ง์ฐ์ฐ์ ํ ๋งํผ ๋๋ ๊ฐ๋๋ค.
ํด์์ฝ๋ ์์ฒด๊ฐ ๋ฐฐ์ด๋ฐฉ์ index๋ก ์ฌ์ฉ๋๋ค.
๋ฐฐ์ด์ ํด์์ฝ๋๋ก ๋ฐ๋ก ๋ค์ด๋ ํธ๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค.
๋จ์
๋๋คํ๊ฒ ๋ฃ๊ธฐ ๋๋ฌธ์ ๊น๋ํ๊ฒ ์ ๋ฆฌ๋์ง ์๋๋ค.
๊ณต๊ฐํจ์จ์ฑ์ด ๋จ์ด์ง๋ค. ๊ณต๊ฐํฌ๊ธฐ๋ฅผ ๋ฌด์กฐ๊ฑด ์ ํด์ผํ๋ค.
์ฌ๋, ์๋ฆฌ๋ก ์๊ฐํ๋ฉด ์ฌ๋ < ์๋ฆฌ๊ฐ ํญ์ ์ปค์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
Hash Function์ ์ค์กด๋๊ฐ ๋๋ค.
๋ฌธ์์ด์ ๋ฐ๊ณ ์ ํด์ง ๊ธธ์ด์ ์์ํ์ ์ค๋ค.
ex) MD5, SHA and etc.. ์ ๋ช ํ ํด์ฌ/ ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ์ด๋ค.
ํด์ํจ์๋ Idempotent ์ฌ์ผ ํ๋ค.
์ธํ์ ๊ดํด ๊ฐ์ ์์ํ์ด ๋์์ผ ํ๋ค.
good distribution of values
ํ๋ณดํ ๊ณต๊ฐ์ ๊ณ ๋ฃจ๊ณ ๋ฃจ ์ ์ด์ฉํด์ผ ํ๋ค.
needs to be performant O(1) ์ด๋ผ๋ ์๋ฏธ๊ฐ ํ์คํ๋๋ก ํด์ผํ๋ค.
Time Complexity
Big O
์ค๋ช
Insertion
O(1)
์ด๋ค ์ํฉ์ด๋ ๋ณํ์ง ์๊ณ ๋์ถํ ์๊ฐ์ด ํญ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ 0(1) ex) ๋ฃจํ๋ฅผ ์ฌ๋ฌ๋ฒ ๋๋ ค๋ ํญ์ ๋์ผํ ์๊ฐ์ด๊ธฐ ๋๋ฌธ์ O(1)
Deletion
O(1)
Search
O(1)
์ฃผ์๋ก
๋๋คํ๊ฒ ์ ์ฅํ๋ค๊ฐ ๋ฝ์ ์ฌ ์ ์์ด์ผ ํ๋ค.
๊ฐ๋ณ์ ์ผ๋ก ๊ด๊ณ๊ฐ ์๋ค. ๋์ผ ์ด๋ฆ์ ์ถฉ๋ํ ์ ์๋ค.
๋ธ๋ก์ฒด์ธ
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ์ฒด๋ก ๋ง๋ค์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์์ง์์ key์ value๋ฅผ ํด์ํ์ ์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
์ ํ๋ธ์ ์์์ ๋ค์ด ๋ฐ์์ ์ฌ๋ฆฐ๋ค๋ฉด
์๋ฐ์คํฌ๋ฆฝํธ๋ก ํด์ํ ์ด๋ธ๋ก ๊ตฌํํ๋ ๊ฒฝ์ฐ๋ ์๋ค.