์ด ์ ์ฅ์์๋ ๋ง์ด ์๋ ค์ง ์๊ณ ๋ฆฌ์ฆ ๋ฐ ์๋ฃ ๊ตฌ์กฐ์ Javascript ๊ธฐ๋ฐ ์์ ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๊ฐ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ ๊ตฌ์กฐ์ ๋ํด ์ฐ๊ด๋์ด ์๋ ์ค๋ช ์ด README์ ์์ฑ๋์ด ์์ผ๋ฉฐ, ๋งํฌ๋ฅผ ํตํด ๋ ์์ธํ ์ค๋ช ์ ๋ง๋ ์ ์์ต๋๋ค. (๊ด๋ จ๋ YouTube ์์๋ ํฌํจ).
Read this in other languages: English, ็ฎไฝไธญๆ, ็น้ซไธญๆ, ๆฅๆฌ่ช, Polski, Franรงais, Espaรฑol, Portuguรชs, ะ ัััะบะธะน, Tรผrk, Italiana, Bahasa Indonesia, ะฃะบัะฐัะฝััะบะฐ, Arabic, Tiแบฟng Viแปt, Deutsch, Uzbek
์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ๊ณ ์ ์ฅํจ์ผ๋ก์จ ๋ ํจ์จ์ ์ผ๋ก ์ ๊ทผํ๊ณ ์์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ฐ๋จํ ๋งํด, ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ ๊ฐ๋ค, ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ํจ์์ ์์ ์ ๋ชจ์์ ๋๋ค.
B
- ์
๋ฌธ์, A
- ์๋ จ์
B
์ฐ๊ฒฐ ๋ฆฌ์คํธB
์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธB
ํB
์คํB
ํด์ ํ ์ด๋ธB
ํB
์ฐ์ ์์ ํA
ํธ๋ผ์ดA
ํธ๋ฆฌA
์ด์ง ํ์ ํธ๋ฆฌA
AVL ํธ๋ฆฌA
Red-Black ํธ๋ฆฌA
์ธ๊ทธ๋จผํธ ํธ๋ฆฌ - min/max/sum range ์ฟผ๋ฆฌ ์์ .A
Fenwick ํธ๋ฆฌ (Binary Indexed Tree)
A
๊ทธ๋ํ (์ ๋ฐฉํฅ, ๋ฌด๋ฐฉํฅ)A
์๋ก์ ์งํฉA
๋ธ๋ฃธ ํํฐ
์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ์ ํํ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ผ๋ จ์ ์์ ์ ์ ํํ๊ฒ ์ ์ํด ๋์ ๊ท์น๋ค์ ๋๋ค.
B
- ์
๋ฌธ์, A
- ์๋ จ์
- Math
B
Bit Manipulation - set/get/update/clear bits, 2์ ๊ณฑ / ๋๋๊ธฐ, ์์๋ก ๋ง๋ค๊ธฐ etc.B
ํฉํ ๋ฆฌ์ผB
ํผ๋ณด๋์น ์B
์์ ํ๋ณ (trial division ๋ฐฉ์)B
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ - ์ต๋๊ณต์ฝ์ (GCD)B
์ต์ ๊ณต๋ฐฐ์ - LCMB
์๋ผํ ์คํ ๋ค์ค์ ์ฒด - ํน์ ์ ์ดํ์ ๋ชจ๋ ์์ ์ฐพ๊ธฐB
2์ ๊ฑฐ๋ญ์ ๊ณฑ ํ๋ณ๋ฒ - ์ด๋ค ์๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ธ์ง ํ๋ณ (naive ์ bitwise ์๊ณ ๋ฆฌ์ฆ)B
ํ์ค์นผ ์ผ๊ฐํA
์์ฐ์ ๋ถํA
๋ฆฌ์ฐ ํ์ด ฯ ์๊ณ ๋ฆฌ์ฆ - N-๊ฐํ์ ๊ธฐ๋ฐ์ผ๋ก ฯ ๊ทผ์ฌ์น ๊ตฌํ๊ธฐ
- Sets
B
์นดํฐ์ง์ธ ํ๋ก๋ํธ - ๊ณฑ์งํฉB
FisherโYates ์ ํ - ์ ํ ์ํ์ค์ ๋ฌด์์ ์์ดA
๋ฉฑ์งํฉ - ์งํฉ์ ๋ชจ๋ ๋ถ๋ถ์งํฉA
์์ด (๋ฐ๋ณต ์ ,๋ฌด)A
์กฐํฉ (๋ฐ๋ณต ์ ,๋ฌด)A
์ต์ฅ ๊ณตํต ๋ถ๋ถ์์ด (LCS)A
์ต์ฅ ์ฆ๊ฐ ์์ดA
Shortest Common Supersequence (SCS)A
๋ฐฐ๋ญ ๋ฌธ์ - "0/1" ๊ณผ "Unbound"A
์ต๋ ๊ตฌ๊ฐํฉ - "๋ธ๋ฃจํธ ํฌ์ค" ๊ณผ "๋์ ๊ณํ๋ฒ" (Kadane's) ๋ฒ์ A
์กฐํฉ ํฉ - ํน์ ํฉ์ ๊ตฌ์ฑํ๋ ๋ชจ๋ ์กฐํฉ ์ฐพ๊ธฐ
- Strings
B
ํด๋ฐ ๊ฑฐ๋ฆฌ - ์ฌ๋ณผ์ด ๋ค๋ฅธ ์์น์ ๊ฐฏ์A
ํธ์ง ๊ฑฐ๋ฆฌ - ๋ ์ํ์ค ๊ฐ์ ์ต์ ํธ์ง๊ฑฐ๋ฆฌA
์ปค๋์ค-๋ชจ๋ฆฌ์ค-ํ๋ซ ์๊ณ ๋ฆฌ์ฆ (KMP ์๊ณ ๋ฆฌ์ฆ) - ๋ถ๋ถ ๋ฌธ์์ด ํ์ (ํจํด ๋งค์นญ)A
Z ์๊ณ ๋ฆฌ์ฆ - ๋ถ๋ถ ๋ฌธ์์ด ํ์ (ํจํด ๋งค์นญ)A
๋ผ๋น ์นดํ ์๊ณ ๋ฆฌ์ฆ - ๋ถ๋ถ ๋ฌธ์์ด ํ์A
์ต์ฅ ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ดA
์ ๊ท ํํ์ ๋งค์นญ
- Searches
B
์ ํ ํ์B
์ ํ ํ์ (or Block Search) - ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ์B
์ด์ง ํ์ - ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ์B
๋ณด๊ฐ ํ์ - ๊ท ๋ฑํ ๋ถํฌ๋ฅผ ์ด๋ฃจ๋ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ์
- Sorting
B
๊ฑฐํ ์ ๋ ฌB
์ ํ ์ ๋ ฌB
์ฝ์ ์ ๋ ฌB
ํ ์ ๋ ฌB
๋ณํฉ ์ ๋ ฌB
ํต ์ ๋ ฌ - ์ ์๋ฆฌ(in-place)์ ์ ์๋ฆฌ๊ฐ ์๋(non-in-place) ๊ตฌํB
์ ธ ์ ๋ ฌB
๊ณ์ ์ ๋ ฌB
๊ธฐ์ ์ ๋ ฌ
- Trees
B
๊น์ด ์ฐ์ ํ์ (DFS)B
๋๋น ์ฐ์ ํ์ (BFS)
- Graphs
B
๊น์ด ์ฐ์ ํ์ (DFS)B
๋๋น ์ฐ์ ํ์ (BFS)B
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ - ์ต์ ์ ์ฅ ํธ๋ฆฌ ์ฐพ๊ธฐ (MST) ๋ฌด๋ฐฉํฅ ๊ฐ์ค ๊ทธ๋ํA
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ - ํ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ๊น์ง ์ต๋จ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ - ํ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ๊น์ง ์ต๋จ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ - ๋ชจ๋ ์ข ๋จ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
์ฌ์ดํด ํ์ง - ์ ๋ฐฉํฅ, ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ (DFS ์ Disjoint Set ์ ๊ธฐ๋ฐํ ๋ฒ์ )A
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ - ๋ฌด๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ์์ ์ต์ ์ ์ฅ ํธ๋ฆฌ (MST) ์ฐพ๊ธฐA
์์ ์ ๋ ฌ - DFS ๋ฐฉ์A
๋จ์ ์ - ํ์์ ์๊ณ ๋ฆฌ์ฆ (DFS ๊ธฐ๋ฐ)A
๋จ์ ์ - DFS ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆA
์ค์ผ๋ฌ ๊ฒฝ๋ก ์ ์ค์ผ๋ฌ ํ๋ก - Fleury์ ์๊ณ ๋ฆฌ์ฆ - ๋ชจ๋ ์ฃ์ง๋ฅผ ํ๋ฒ๋ง ๋ฐฉ๋ฌธA
ํด๋ฐํด ๊ฒฝ๋ก - ๋ชจ๋ ๊ผญ์ง์ ์ ํ๋ฒ๋ง ๋ฐฉ๋ฌธA
๊ฐ๊ฒฐํฉ ์ปดํฌ๋ํธ - Kosaraju์ ์๊ณ ๋ฆฌ์ฆA
์ธํ์ ๋ฌธ์ - ๊ฐ ๋์๋ฅผ ๋ค ๋ฐฉ๋ฌธํ๊ณ ๋ค์ ์ถ๋ฐ์ ์ผ๋ก ๋์์ค๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
- Uncategorized
B
ํ๋ ธ์ด ํB
์ ๋ฐฉ ํ๋ ฌ ํ์ - ์ ์๋ฆฌ(in-place) ์๊ณ ๋ฆฌ์ฆB
์ ํ ๊ฒ์ - ๋ฐฑํธ๋ํน, ๋์ ๊ณํ๋ฒ (top-down + bottom-up), ํ์ ์๊ณ ๋ฆฌ์ฆ ์์ B
Unique ๊ฒฝ๋ก - ๋ฐฑํธ๋ํน, ๋์ ๊ณํ๋ฒ, ํ์ค์นผ ์ผ๊ฐํ์ ๊ธฐ๋ฐํ ์์ B
๋น๋ฌผ ๋ด๊ธฐ ๋ฌธ์ - trapping rain water problem (๋์ ๊ณํ๋ฒ, ๋ธ๋ฃจํธํฌ์ค ๋ฒ์ )A
N-Queens ๋ฌธ์ A
๊ธฐ์ฌ์ ์ฌํ ๋ฌธ์
์๊ณ ๋ฆฌ์ฆ ํจ๋ฌ๋ค์ ์ด๋, ์๊ณ ๋ฆฌ์ฆ์ด ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฑํํ ๊ธฐ์ด๊ฐ ๋๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ ํน์ ์ ๊ทผ๋ฒ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ํด๊ฒฐํ๋ ๋ฌธ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ๋ฐฉ์์ด ์์ ํ ๋ค๋ฅด๋๋ผ๋,์๊ณ ๋ฆฌ์ฆ์ ๋์ ์์น์ด ๊ฐ์ผ๋ฉด ๊ฐ์ ํจ๋ฌ๋ค์์ ์ฌ์ฉํ๋ค๊ณ ๋งํ ์ ์์ผ๋ฉฐ, ์ฃผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ๋ถํ๋ ๊ธฐ์ค์ผ๋ก ์ฐ์ธ๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ฐ์ ์ธ ์ปดํจํฐ์ ํ๋ก๊ทธ๋จ์ ๋ํ ๊ฐ๋ ๋ณด๋ค ๋ณด๋ค ๋ ์ถ์์ ์ธ ๊ฐ๋ ์ธ ๊ฒ์ฒ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ํจ๋ฌ๋ค์์ ๋ช ํํ ์ ์๋ ์ํ์ ์ค์ฒด๊ฐ ์๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ทธ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ๋ณด๋ค๋ ํจ์ฌ ์ถ์์ ์ธ ๊ฐ๋ ์ ๋๋ค.
- ๋ธ๋ฃจํธ ํฌ์ค(Brute Force) - ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ ๋ค ์ต์ ์ ์ฐพ์๋ด๋ ๋ฐฉ์์
๋๋ค.
B
์ ํ ํ์B
๋น๋ฌผ ๋ด๊ธฐ ๋ฌธ์ - trapping rain water problemA
์ต๋ ๊ตฌ๊ฐํฉA
์ธํ์ ๋ฌธ์ - ๊ฐ ๋์๋ฅผ ๋ค ๋ฐฉ๋ฌธํ๊ณ ๋ค์ ์ถ๋ฐ์ ์ผ๋ก ๋์์ค๋ ์ต๋จ ๊ฒฝ๋ก ์ฐพ๊ธฐ
- ํ์ ์๊ณ ๋ฆฌ์ฆ(Greedy) - ์ดํ๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ํ์ฌ ์์ ์์ ๊ฐ์ฅ ์ต์ ์ธ ์ ํ์ ํ๋ ๋ฐฉ์์
๋๋ค.
B
์ ํ ๊ฒ์A
์ชผ๊ฐค์ ์๋ ๋ฐฐ๋ญ ๋ฌธ์ A
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ - ๋ชจ๋ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ - ๋ฌด๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ์์ ์ต์ ์ ์ฐฝ ํธ๋ฆฌ (MST) ์ฐพ๊ธฐA
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ - ๋ฌด๋ฐฉํฅ ๊ฐ์ค์น ๊ทธ๋ํ์์ ์ต์ ์ ์ฐฝ ํธ๋ฆฌ (MST) ์ฐพ๊ธฐ
- ๋ถํ ์ ๋ณต๋ฒ(Divide and Conquer) - ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค ํด๊ฒฐํ๋ ๋ฐฉ์์
๋๋ค.
B
์ด์ง ํ์B
ํ๋ ธ์ด ํB
ํ์ค์นผ ์ผ๊ฐํB
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ - ์ต๋๊ณต์ฝ์ ๊ณ์ฐ (GCD)B
๋ณํฉ ์ ๋ ฌB
ํต ์ ๋ ฌB
ํธ๋ฆฌ ๊น์ด ์ฐ์ ํ์ (DFS)B
๊ทธ๋ํ ๊น์ด ์ฐ์ ํ์ (DFS)B
์ ํ ๊ฒ์A
์์ด (๋ฐ๋ณต ์ ,๋ฌด)A
์กฐํฉ (๋ฐ๋ณต ์ ,๋ฌด)
- ๋์ ๊ณํ๋ฒ(Dynamic Programming) - ์ด์ ์ ์ฐพ์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ ์ต์ข
์ ์ผ๋ก ํด๊ฒฐํ๋ ๋ฐฉ์์
๋๋ค.
B
ํผ๋ณด๋์น ์B
์ ํ ๊ฒ์B
Unique PathsB
๋น๋ฌผ ๋ด๊ธฐ ๋ฌธ์ - trapping rain water problemA
ํธ์ง ๊ฑฐ๋ฆฌ - ๋ ์ํ์ค ๊ฐ์ ์ต์ ํธ์ง ๊ฑฐ๋ฆฌA
์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด (LCS)A
์ต์ฅ ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ดA
์ต์ฅ ์ฆ๊ฐ ์์ดA
Shortest Common SupersequenceA
0/1 ๋ฐฐ๋ญ ๋ฌธ์ A
์์ฐ์ ๋ถํA
์ต๋ ๊ตฌ๊ฐํฉA
๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ - ๋ชจ๋ ์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ - ๋ชจ๋ ์ข ๋จ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐA
์ ๊ท ํํ์ ๋งค์นญ
- ๋ฐฑํธ๋ํน(Backtracking) - ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๋ค๋ ์ ์์ ๋ธ๋ฃจํธ ํฌ์ค์ ์ ์ฌํฉ๋๋ค. ํ์ง๋ง ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ ๋ง๋ค ๋ชจ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธํ๊ณ ์งํํฉ๋๋ค. ๋ง์ฝ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋ค๋ฉด ๋ค๋ก ๋์๊ฐ๋๋ค (๋ฐฑํธ๋ํน). ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ ํํฉ๋๋ค. ๋ณดํต ์ํ๋ฅผ ์ ์งํ DFS ํ์์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
B
์ ํ ๊ฒ์B
Unique PathsA
ํด๋ฐํด ๊ฒฝ๋ก - ๋ชจ๋ ์ ์ ํ๋ฒ์ฉ ๋ฐฉ๋ฌธA
N-Queens ๋ฌธ์ A
๊ธฐ์ฌ์ ์ฌํA
์กฐํฉ ํฉ - ํน์ ํฉ์ ๊ตฌ์ฑํ๋ ๋ชจ๋ ์กฐํฉ ์ฐพ๊ธฐ
- ๋ถ๊ธฐ ํ์ ๋ฒ - ๋ฐฑํธ๋ํน์ผ๋ก ์ฐพ์ ๊ฐ ๋จ๊ณ์ ์ต์ ๋น์ฉ์ด ๋๋ ํด๋ฅผ ๊ธฐ์ตํด ๋๊ณ ์๋ค๊ฐ, ์ด ๋น์ฉ์ ์ด์ฉํด์ ๋ ๋ฎ์ ์ต์ ์ ํด๋ฅผ ์ฐพ์ต๋๋ค. ๊ธฐ์ตํด๋ ์ต์ ๋น์ฉ๋ค์ ์ด์ฉํด ๋ ๋์ ๋น์ฉ์ด ๋๋ ํด๊ฒฐ๋ฒ์ ํ์ ์ํจ์ผ๋ก์จ ๋ถํ์ํ ์๊ฐ ์๋ชจ๋ฅผ ์ค์ ๋๋ค. ๋ณดํต ์ํ ๊ณต๊ฐ ํธ๋ฆฌ์ DFS ํ์์ ์ด์ฉํ BFS ํ์ ๋ฐฉ์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ ์ข ์ ๋ชจ๋๋ค ์ค์น
npm install
ESLint ์คํ
์ฝ๋์ ํ์ง์ ํ์ธ ํ ์ ์์ต๋๋ค.
npm run lint
๋ชจ๋ ํ ์คํธ ์คํ
npm test
์ด๋ฆ์ ํตํด ํน์ ํ ์คํธ ์คํ
npm test -- 'LinkedList'
Playground
./src/playground/playground.js
ํ์ผ์ ํตํด ์๋ฃ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ๊ณ ./src/playground/__test__/playground.test.js
์ ํ
์คํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ๊ฒ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์๋ํ๋๋ก ๋์ํ๋์ง ํ์ธ ํ ์ ์์ต๋๋ค.:
npm test -- 'playground'
โถ Data Structures and Algorithms on YouTube
Big O ํ๊ธฐ๋ก ํ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฆ๊ฐ ์์์ ๋๋ค.
Source: Big O Cheat Sheet.
์๋๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Big O ํ๊ธฐ์ ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ์ ๋น๊ตํ ํ์ ๋๋ค.
Big O ํ๊ธฐ | 10 ๊ฐ ์ผ๋ | 100 ๊ฐ ์ผ๋ | 1000 ๊ฐ ์ผ๋ |
---|---|---|---|
O(1) | 1 | 1 | 1 |
O(log N) | 3 | 6 | 9 |
O(N) | 10 | 100 | 1000 |
O(N log N) | 30 | 600 | 9000 |
O(N^2) | 100 | 10000 | 1000000 |
O(2^N) | 1024 | 1.26e+29 | 1.07e+301 |
O(N!) | 3628800 | 9.3e+157 | 4.02e+2567 |
์๋ฃ ๊ตฌ์กฐ | ์ ๊ทผ | ๊ฒ์ | ์ฝ์ | ์ญ์ | ๋น๊ณ |
---|---|---|---|---|---|
๋ฐฐ์ด | 1 | n | n | n | |
์คํ | n | n | 1 | 1 | |
ํ | n | n | 1 | 1 | |
์ฐ๊ฒฐ ๋ฆฌ์คํธ | n | n | 1 | 1 | |
ํด์ ํ ์ด๋ธ | - | n | n | n | ์๋ฒฝํ ํด์ ํจ์์ ๊ฒฝ์ฐ O(1) |
์ด์ง ํ์ ํธ๋ฆฌ | n | n | n | n | ๊ท ํ ํธ๋ฆฌ์ ๊ฒฝ์ฐ O(log(n)) |
B-ํธ๋ฆฌ | log(n) | log(n) | log(n) | log(n) | |
Red-Black ํธ๋ฆฌ | log(n) | log(n) | log(n) | log(n) | |
AVL ํธ๋ฆฌ | log(n) | log(n) | log(n) | log(n) | |
Bloom Filter | - | 1 | 1 | - | ๊ฑฐ์ง ์์ฑ์ด ํ์ ์ค ๋ฐ์ ๊ฐ๋ฅ |
์ด๋ฆ | ์ต์ | ํ๊ท | ์ต์ | ๋ฉ๋ชจ๋ฆฌ | ๋์ผ๊ฐ ์์์ ์ง | ๋น๊ณ |
---|---|---|---|---|---|---|
๊ฑฐํ ์ ๋ ฌ | n | n2 | n2 | 1 | Yes | |
์ฝ์ ์ ๋ ฌ | n | n2 | n2 | 1 | Yes | |
์ ํ ์ ๋ ฌ | n2 | n2 | n2 | 1 | No | |
ํ ์ ๋ ฌ | n log(n) | n log(n) | n log(n) | 1 | No | |
๋ณํฉ ์ ๋ ฌ | n log(n) | n log(n) | n log(n) | n | Yes | |
ํต ์ ๋ ฌ | n log(n) | n log(n) | n2 | log(n) | No | ํต ์ ๋ ฌ์ ๋ณดํต ์ ์๋ฆฌ(in-place)๋ก O(log(n)) ์คํ๊ณต๊ฐ์ผ๋ก ์ํ๋ฉ๋๋ค. |
์ ธ ์ ๋ ฌ | n log(n) | ๊ฐ๊ฒฉ ์์์ ์ํฅ์ ๋ฐ์ต๋๋ค. | n (log(n))2 | 1 | No | |
๊ณ์ ์ ๋ ฌ | n + r | n + r | n + r | n + r | Yes | r - ๋ฐฐ์ด๋ด ๊ฐ์ฅ ํฐ ์ |
๊ธฐ์ ์ ๋ ฌ | n * k | n * k | n * k | n + k | Yes | k - ํค๊ฐ์ ์ต๋ ๊ธธ์ด |
โน๏ธ A few more projects and articles about JavaScript and algorithms on trekhleb.dev