๐Ÿ“š CS [ComputerScience]/๐Ÿ“š CS ๋ฉด์ ‘

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [18] [์ž๋ฃŒ๊ตฌ์กฐ / ์•Œ๊ณ ๋ฆฌ์ฆ˜]

Dbswnstjd 2024. 3. 13. 19:51

1. ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ?

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

 

2. Array [ ๋ฐฐ์—ด ] ์™€ LinkedList [ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ]

Array ๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ๊ณ ์ • ๊ธธ์ด์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•˜๋Š” Index๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, Index๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” Random Access๋ฅผ ์ง€์›ํ•œ๋‹ค. Index๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ƒ‰์ธํ•˜๋ฉด O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ค‘๊ฐ„์— ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

์ด๋Ÿฌํ•œ ๊ณ ์ •๊ธธ์ด์™€ ๋Š๋ฆฐ ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ LinkedList์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ ๋…ธ๋“œ๋“ค์„ ์„œ๋กœ ์—ฐ๊ฒฐ ์‹œ์ผœ ๋งŒ๋“  ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๊ฐ€๋ณ€ ๊ธธ์ด์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ค‘๊ฐ„์— ๊ฐ’์„ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์—์„œ O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋ฐ˜๋ฉด, ๊ฒ€์ƒ‰์— ์žˆ์–ด์„œ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N) ์ด๋ผ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

3. Stack [ ์Šคํƒ ] ๊ณผ Queue [ ํ ]

์Šคํƒ์€ FIFO์˜ ํŠน์ง•์„ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์Šคํƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด / ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ฃผ๋ฃŒ ๋ฐฐ์—ด์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ๋‹ค. ์Šคํƒ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์€ ๋ธŒ๋ผ์šฐ์ €์˜ '๋’ค๋กœ๊ฐ€๊ธฐ' ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์Šคํƒ ์˜์—ญ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

ํ๋Š” FILO์˜ ํŠน์ง•์„ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํ๋Š” ์ฃผ๋กœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ๋‹ค. ํ๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์€ ํ”„๋ฆฐํ„ฐ ํ, CPU ์Šค์ผ€์ค„๋ง์˜ Ready Queue๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. 

 

3. Priority Queue [ ์šฐ์„ ์ˆœ์œ„ ํ ]

์„ ์ž…์„ ์ถœ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์›์†Œ๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, Heap์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋ชจ๋‘ O(LogN)์ด ๋ณด์žฅ๋œ Heap ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.