Skip to content

Files

Latest commit

d7a41a6 ยท Jul 13, 2024

History

History
283 lines (241 loc) ยท 19.8 KB

README.ko-KR.md

File metadata and controls

283 lines (241 loc) ยท 19.8 KB

JavaScript ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ž๋ฃŒ ๊ตฌ์กฐ

CI codecov

์ด ์ €์žฅ์†Œ์—๋Š” ๋งŽ์ด ์•Œ๋ ค์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ž๋ฃŒ ๊ตฌ์กฐ์˜ 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 - ์ž…๋ฌธ์ž, A - ์ˆ™๋ จ์ž

์ฃผ์ œ๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํŒจ๋Ÿฌ๋‹ค์ž„๋ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ด๋ž€, ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„ํƒํ•œ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ํ˜น์€ ์ ‘๊ทผ๋ฒ•์ž…๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ž‘ ๋ฐฉ์‹์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๋”๋ผ๋„,์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ž‘ ์›์น™์ด ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ํŒจ๋Ÿฌ๋‹ค์Œ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ์“ฐ์ธ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๊ฐœ๋…๋ณด๋‹ค ๋ณด๋‹ค ๋” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ๋ช…ํ™•ํžˆ ์ •์˜๋œ ์ˆ˜ํ•™์  ์‹ค์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐœ๋…๋ณด๋‹ค๋„ ํ›จ์”ฌ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

์ด ์ €์žฅ์†Œ์˜ ์‚ฌ์šฉ๋ฒ•

๋ชจ๋“  ์ข…์† ๋ชจ๋“ˆ๋“ค ์„ค์น˜

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 ํ‘œ๊ธฐ

Big O ํ‘œ๊ธฐ๋กœ ํ‘œ์‹œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ฆ๊ฐ€ ์–‘์ƒ์ž…๋‹ˆ๋‹ค.

Big O graphs

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