๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ป Computer Science53

Hash table & BST(Binary Search Tree) ๋ž€? BST (Binary Search Tree) ๋ž€? ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ(Binary Search Tree; BST)๋Š” ์ •๋ ฌ๋œ tree์ด๋‹ค. ์–ด๋Š node๋ฅผ ์„ ํƒํ•˜๋“  ํ•ด๋‹น node์˜ left subtree์—๋Š” ๊ทธ node์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’๋“ค์„ ์ง€๋‹Œ node๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , node์˜ right subtree์—๋Š” ๊ทธ node์˜ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’๋“ค์„ ์ง€๋‹Œ node๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” binary tree์ด๋‹ค. ๊ฒ€์ƒ‰๊ณผ ์ €์žฅ, ์‚ญ์ œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋ชจ๋‘ O(logn)์ด๊ณ , worst case๋Š” ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ tree๊ฐ€ ๋์„ ๋•Œ O(n)์ด๋‹ค. BST๋Š” ์ €์žฅ๊ณผ ๋™์‹œ์— ์ •๋ ฌ์„ ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ €์žฅ์„ ํ•˜๊ฒŒ๋œ๋‹ค. ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๋‹ค. ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ๊ฐ€.. 2023. 5. 25.
[์ž๋ฃŒ๊ตฌ์กฐ] ํ Queue & ์Šคํƒ Stack & ์šฐ์„ ์ˆœ์œ„ํ priority queue & ํž™ Heap ์ด๋ž€? Queue ํ ๋ž€? queue๋Š” ์„ ์ž…์„ ์ถœ FIFO(First In Frist Out)์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค ์‹œ๊ฐ„๋ณต์žก๋„๋Š” enqueue O(1), dequeue O(1) ์ž…๋‹ˆ๋‹ค. ํ™œ์šฉ ์˜ˆ์‹œ Cache ๊ตฌํ˜„, ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. FIFO (First In First Out) ์ด๋ž€? queue๋Š” ์‹œ๊ฐ„ ์ˆœ์„œ์ƒ ๋จผ์ € ์ง‘์–ด ๋„ฃ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ์„ ์ž…์„ ์ถœ FIFO(First In First Out) ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. enqueue & dequeue queue์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ enqueue๋ผ๊ณ  ํ•œ๋‹ค. queue์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ dequeue๋ผ๊ณ  ํ•œ๋‹ค. enqueue์˜ ๊ฒฝ์šฐ queue์˜ ๋งจ๋’ค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์™„๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(.. 2023. 5. 25.
Process & Thread ๋ž€? (multi process & multi thread & Deadlock ์ •๋ฆฌ) Process ๋ž€? ์‹คํ–‰ํŒŒ์ผ(program)์ด memory์— ์ ์žฌ๋˜์–ด CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ process๋ผ๊ณ  ํ•œ๋‹ค. ์šด์˜์ฒด์ œ๋ฅผ ๊ด€ํ†ตํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๋‹จ์–ด ํ•˜๋‚˜๋ฅผ ๋ฝ‘๋Š”๋‹ค๋ฉด Process์ด๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์›๋ฆฌ๋“ค์ด ๋ฐ”๋กœ Process๋ฅผ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ process์˜ ์ •์˜๋ฅผ ์ž˜ ์ดํ•ดํ•œ๋‹ค๋ฉด ์šด์˜์ฒด์ œ์˜ ๋‹ค๋ฅธ ๋‚ด์šฉ๋“ค์„ ์ดํ•ดํ•˜๊ธฐ ํŽธํ•˜๋‹ค. process๋ฅผ memory์™€ CPU๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ! Process ํ”„๋กœ์„ธ์Šค(process)๋ž€ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ(program in execution)์„ ๋œปํ•œ๋‹ค. ์ฆ‰, ์‹คํ–‰ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋˜ program์ด memory์— ์ ์žฌ๋˜์–ด CPU์— ์˜ํ•ด ์‹คํ–‰(์—ฐ์‚ฐ)๋˜๋Š”๊ฒƒ์„ process๋ผ๊ณ  ํ•œ๋‹ค. ( + program์€ ๋‹จ์ˆœํžˆ ๋ช…๋ น์–ด ๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š”.. 2023. 5. 23.
๋™์‹œ์„ฑ (Concurrency)๊ณผ ๋ณ‘๋ ฌ์„ฑ (Parallelism) ๋™์‹œ์„ฑ (Concurrency) ํ•˜๋‚˜์˜ ์ฝ”์–ด์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์‹คํ–‰ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„ ์‹ฑ๊ธ€ ์ฝ”์–ด, ๋ฉ€ํ‹ฐ ์ฝ”์–ด์—์„œ ๋ชจ๋‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋… ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ˆˆ์œผ๋กœ ๋ณด๊ธฐ์—๋Š” ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹œ๋ถ„ํ• (Interleaving) ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ CPU๊ฐ€ ์ž‘์—…๋งˆ๋‹ค ์‹œ๊ฐ„์„ ๋ถ„ํ• ํ•ด์„œ ์ ์ ˆํ•˜๊ฒŒ ๋ฌธ๋งฅ ๊ตํ™˜(context switching) ํ•œ๋‹ค. ๋•Œ๋ฌธ์—, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์ด๋‹ค. ๋™์‹œ์„ฑ์€ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ๋””๋ฒ„๊ทธํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ ต๋‹ค. ๋™์‹œ์„ฑ์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ๋Š” ์œ ํœด ์‹œ๊ฐ„(idle time)์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. * ์œ ํœด ์‹œ๊ฐ„์ด๋ž€(idle time)? ์ปดํ“จํ„ฐ๊ฐ€ ์ž‘๋™ ๊ฐ€๋Šฅํ•œ๋ฐ๋„ ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. Task 1 ๊ณผ Task 2 ๋ฅผ ์ชผ.. 2023. 5. 22.
728x90
๋ฐ˜์‘ํ˜•