ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)์€ ๋„์„œ๊ด€.

ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)์€ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํ•ด์‹œ ํ•จ์ˆ˜(Hash Function)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํ‚ค(Key)๋ฅผ ํ•ด์‹œ ๊ฐ’(์ธ๋ฑ์Šค)์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ” ๋‚ด์˜ ์ฃผ์†Œ(์ธ๋ฑ์Šค)๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜๋œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”(Slot, Bucket)์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ‚ค๊ฐ€ 123817์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜์— ๋„ฃ์œผ๋ฉด 3819์™€ ๊ฐ™์€ ํ•ด์‹œ ๊ฐ’์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด ํ•ด์‹œ ๊ฐ’์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํ…Œ์ด๋ธ” ๋‚ด์˜ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด.. ์ด ๊ธ€์˜ ์ œ๋ชฉ์ฒ˜๋Ÿผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋„์„œ๊ด€.์„ ์ƒ..

Computer/Data Structure 2024. 3. 8. 18:39
[Swift] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)๋Š” ์ง€ํ•˜์ฒ . (feat. ์„ค๊ตญ์—ด์ฐจ)

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋“ค์„ ํฌ์ธํ„ฐ๋กœ ์„ ํ˜•์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์†์„ฑ(value)์™€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ(pointer)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด.. ์ด ๊ธ€์˜ ์ œ๋ชฉ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ง€ํ•˜์ฒ .์„ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค! (์„ค๊ตญ ์—ด์ฐจ๋Š” ๋’ค์—์„œ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ˜Ž) ์ง€ํ•˜์ฒ ์€ ์—ฌ๋Ÿฌ ๊ฐ์‹ค๋“ค์ด ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๊ฐ์‹ค์—๋Š” ์Šน๊ฐ(๋ฐ์ดํ„ฐ)๊ฐ€ ํƒ€๊ณ  ์žˆ๊ณ , ๊ฐ ๊ฐ์‹ค๋“ค์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฐ๊ฒฐ์„ (์—ฃ์ง€, ๋งํฌ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ, ์ง€ํ•˜์ฒ ์„ ๋จธ๋ฆฌ ์†์— ๋– ์˜ฌ๋ฆฌ๋ฉฐ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ •์˜์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด์‹œ์ฃ . ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋…ธ๋“œ(= ์ง€ํ•˜์ฒ  ๊ฐ์‹ค)๋“ค์„ ํฌ์ธํ„ฐ(= ์ง€ํ•˜์ฒ  ์—ฐ๊ฒฐ์„ )์œผ๋กœ ์—ฐ๊ฒฐํ•ด ์‚ฌ์šฉํ•˜๋Š” ์„ ํ˜•์  ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ์‹ค์„ ..

Computer/Data Structure 2024. 3. 1. 17:07
[Swift] ํ(Queue)๋Š” ์„ ์ฐฉ์ˆœ.

ํ๋Š” ์ด์ „์— ์‚ดํŽด๋ณธ ์Šคํƒ๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, FIFO ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์Šคํƒ์€ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์ถ”์ถœ๋˜์ง€๋งŒ, ํ๋Š” ๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค. (์Šคํƒ์— ๋Œ€ํ•ด ์•„์ง ์ž˜ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๊ณต๋ถ€ํ•œ ํ›„ ๋‹ค์‹œ ์˜ค์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์„ค๋ช…ํ•œ ๋‚ด์šฉ์€ ๊ฐ„๋žตํ•˜๊ฒŒ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค! ๐Ÿ˜Ž) [Swift] ์Šคํƒ(Stack)์€ ํ”„๋ง๊ธ€์Šค. FIFO๋Š” First In First Out ์›์น™์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์— ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ถ”๊ฐ€ํ•˜๊ณ (Enqueue), ๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ถ”์ถœํ•˜๋Š” ๊ฒƒ(Dequeue)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์ด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด… ์ด ๊ธ€์˜ ์ œ๋ชฉ์ฒ˜๋Ÿผ ํ๋Š” ์„ ์ฐฉ์ˆœ.์„์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค! ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ญ”๊ฐ€๋ฅผ ์„ ์ฐฉ์ˆœ์œผ๋กœ ๊ตฌ๋งคํ•  ๋•Œ ์ƒˆ๋ฒฝ์— ์ผ์ฐ ๋‚˜๊ฐ€์„œ ์ค„์„ ์„œ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ์›๋ฆฌ์ž…๋‹ˆ๋‹ค. ์™œ..

Computer/Data Structure 2024. 1. 25. 22:48
[Swift] ์Šคํƒ(Stack)์€ ํ”„๋ง๊ธ€์Šค.

์Šคํƒ์€ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋กœ ์ผ์ฐจ์›์˜ ์„ ํ˜•(linear) ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, LIFO ์›์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. LIFO๋Š” Last In First Out ์›์น™์œผ๋กœ, ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ๊ณ (Push), ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋Š” ๊ฒƒ(Pop)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์ด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด… ์ด ๊ธ€์˜ ์ œ๋ชฉ์ฒ˜๋Ÿผ ์Šคํƒ์€ ํ”„๋ง๊ธ€์Šค.๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค! ํ”„๋ง๊ธ€์Šค๋ฅผ ํฌ์žฅํ•  ๋•Œ๋Š” ์•„๋ž˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์Œ“๊ฒ ์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ๋จน์„ ๋•Œ๋Š” ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋„ฃ์€ ๊ณผ์ž๋ฅผ ๋จผ์ € ๋จน๊ฒ ์ฃ ! ์ด๋Ÿฐ ๊ฒƒ์„ ๋ฐ”๋กœ LIFO ์›์น™์„ ๊ฐ€์ง„ Stack ๊ตฌ์กฐ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด! ์Šคํƒ์€ push ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…ํ•˜๊ณ , pop ์—ฐ์‚ฐ์œผ๋กœ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ €์žฅ๋œ ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Swift๋กœ ..

Computer/Data Structure 2024. 1. 23. 01:02