๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] 05. ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(Hash Table)

ํ•ด์‰ฌ ํ…Œ์ด๋ธ” ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์€ ํ•ด์‹œ ๊ฐ’์„ index๋กœ ์‚ผ์•„ key์™€ value๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ๋ฐ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์€ ๊ฐ Key ๊ฐ’์— ํ•ด์‰ฌํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด ๋ฐฐ์—ด์˜ ๊ณ ์œ ํ•œ index๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด index๋ฅผ ํ™œ์šฉํ•ด ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์ด๋•Œ ์‹ค์ œ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์žฅ์†Œ๋ฅผ ๋ฒ„ํ‚ท์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” Hashtable ํด๋ž˜์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. key๋ฅผ ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ด์‰ฌํ•จ์ˆ˜์ธ hashCode()๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด์‰ฌ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ทธ ๋ณ€๊ฒฝํ•œ ๊ฐ’์„ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ๋˜ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„ ์ถ”๊ฐ€, ์‚ญ์ œ : O(1) ๊ฒ€์ƒ‰ : O(1) ํ•˜..

๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] 04. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋–จ์–ด์ง„ ๊ณต๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์—ฌ์„œ ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋…ธ๋“œ๋ž€ ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„ ๋‹จ์œ„์ด๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. ์žฅ์  ๋ฏธ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•„๋„ ๋จ ๋‹จ์  ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๋ณ„๋„ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, ์ €์žฅ๊ณต๊ฐ„ ํšจ์œจ์ด ์ข‹์ง€ ์•Š์Œ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋Š๋ฆผ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ, ์•ž ๋’ค ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ์„ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ถ€๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉฐ ์žฅ,๋‹จ์ ์„ ์‚ดํŽด๋ณด๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด์ž ๊ตฌํ˜„ IList ์ธํ„ฐํŽ˜์ด์Šค..

๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] 03. ์Šคํƒ(Stack)

์Šคํƒ(Stack) ์Šคํƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์•ž์„  ๊ธ€์—์„œ ์„ค๋ช…ํ•œ ํ๋Š” FIFO ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์Šคํƒ์€ LIFO(Last-In, First-Out) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๊บผ๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ™œ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Java์˜ JVM์ด๋‹ค. JVM์—๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์‹œ, ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹ด๊ธฐ๋Š”๋ฐ ์ด ๋•Œ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ™œ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A๋ฉ”์„œ๋“œ ์•ˆ์—์„œ B๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ทธ๋Ÿผ A๋ฉ”์„œ๋“œ๊ฐ€ ์Šคํƒ ์˜์—ญ์— ํ• ๋‹น๋˜๊ณ , ๊ทธ ๋‹ค์Œ B๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์—์„œ B๋ฉ”์„œ๋“œ๊ฐ€ ํ• ๋‹น๋  ๊ฒƒ์ด๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ๋ฉ”์„œ๋“œ์˜ ํ๋ฆ„์ƒ B๋ฉ”์„œ๋“œ๊ฐ€ ๋จผ์ € ๋™์ž‘์ด ๋๋‚ ํ…Œ๋‹ˆ B..

๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] 02. ํ(Queue)

ํ(Queue) ํ๋Š” ๋จผ์ € ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. FIFO(First-In, First-Out) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ์‹๋‹น์— ์ค„์„ ์„œ๋ฉด ๋จผ์ € ์ค„์„ ์„  ์‚ฌ๋žŒ์ด ๋จผ์ € ์ž…์žฅ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์— ์ฃผ์š” ์šฉ์–ด๋“ค์ด ์žˆ๋Š”๋ฐ, ์„ค๋ช…ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. Enqueue : ํ์— ๊ฐ’์„ ๋„ฃ๋Š” ๊ธฐ๋Šฅ Dequeue : ํ์—์„œ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ธฐ๋Šฅ head : ํ์˜ ๋งจ ์•ž ๋ถ€๋ถ„, front ๋ผ๊ณ ๋„ ํ•จ tail : ํ์˜ ๋งจ ๋’ท ๋ถ€๋ถ„, rear ๋ผ๊ณ ๋„ ํ•จ ํ์— ๊ฐ’์ด ์ถ”๊ฐ€๋œ๋‹ค๋ฉด, tail ์œ„์น˜์— ๊ฐ’์ด Enqueue ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ์ง€์šด๋‹ค๋ฉด head์˜ ๊ฐ’์ด Dequeue ๋  ๊ฒƒ์ด๋‹ค. Enqueue ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ๋Š” ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๊ณ ,..

๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] 01. ๋ฐฐ์—ด

๋ฐฐ์—ด(Array) ๋ฐฐ์—ด์€ ๊ฐ’์„ ๋‚˜์—ดํ•˜๊ณ , ๊ฐ ๊ฐ’์„ ์ธ๋ฑ์Šค์— ๋Œ€์‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด์ด ํ•„์š”ํ•œ ์ด์œ  ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๊ฐ™์€ ์ข…์œ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ ์žฅ์  ๊ฐ’์— ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์‹œ๊ฐ„๋ณต์žก๋„ O(1)) ๋‹จ์  ์ค‘๊ฐ„์— ๊ฐ’์„ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹ค. ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•ด์•ผํ•œ๋‹ค. ๋˜๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋ณ€ํ•  ์ˆ˜ ์—†๋‹ค. ์œ„์˜ ๋‚ด์šฉ๋“ค์„ ์ž๋ฐ”๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์šฐ์„  ๋จผ์ € ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ, ์œ„์˜ ๋‹จ์ ์— ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๋ฐฐ์—ด์€ ์„ ์–ธํ•  ๋•Œ ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ํฌ๊ธฐ๊ฐ€ 7์ธ ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ์ž. int[] arr = new int[7]; ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํฌ๊ธฐ๊ฐ€ 7์ธ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋œ๋‹ค. intํ˜•์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— int ์ž..

seonghye0n
'๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก