CS ์ง€์‹ TIL(6)

YulHee Kimยท2021๋…„ 8์›” 18์ผ
1

CS

๋ชฉ๋ก ๋ณด๊ธฐ
6/9
post-thumbnail
post-custom-banner

์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

1. ์‹œ๊ฐ„๋ณต์žก๋„


์‹œ๊ฐ„๋ณต์žก๋„๋ž€?

์‹œ๊ฐ„ ๋ณต์žก๋„๋ž€ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์†Œ์Šค๋ผ๋ฉด ์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฌ๋Š” ๊ฒŒ ์ข‹์€ ์†Œ์Šค์ž…๋‹ˆ๋‹ค.

๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•

์‹œ๊ฐ„ ๋ณต์žก๋„์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋…์ด ์žˆ์ง€๋งŒ '์•„๋ฌด๋ฆฌ ๋งŽ์ด ๊ฑธ๋ ค๋„ ์ด ์‹œ๊ฐ„ ์•ˆ์—๋Š” ๋๋‚  ๊ฒƒ'์˜ ๊ฐœ๋…์ด ์ œ์ผ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

  • ์„ค๋ช…
(1) O(1) : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ์ƒ๊ด€์—†์ด ์–ธ์ œ๋‚˜ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฆ๊ฐ€ํ•˜๋“  ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๊ฑฐ์˜ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(2) O(logโ‚‚ n) : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋กœ๊ทธ๋งŒํผ ์งง์•„์ง€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ 10๋ฐฐ๊ฐ€ ๋˜๋ฉด, ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์€ 2๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด์ง„ ํƒ์ƒ‰์ด ๋Œ€ํ‘œ์ ์ด๋ฉฐ, ์žฌ๊ท€๊ฐ€ ์ˆœ๊ธฐ๋Šฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋„ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

(3) O(n) : ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ 10๋ฐฐ๊ฐ€ ๋˜๋ฉด, ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๋„ 10๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 1์ฐจ์› for๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

(4) O(n logโ‚‚ n) : ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๋กœ๊ทธ ๋ฐฐ๋งŒํผ ๋” ๋Š˜์–ด๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ 10๋ฐฐ๊ฐ€ ๋˜๋ฉด, ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์€ ์•ฝ 20๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํ€ต ์ •๋ ฌ์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

(5) O(nยฒ) : ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ 10๋ฐฐ๊ฐ€ ๋˜๋ฉด, ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์€ ์ตœ๋Œ€ 100๋ฐฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ๋ฃจํ”„๊ฐ€ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

(6) O(2โฟ) : ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ์‹œ๊ฐ„์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด ์žˆ์œผ๋ฉฐ, ์žฌ๊ท€๊ฐ€ ์—ญ๊ธฐ๋Šฅ์„ ํ•  ๊ฒฝ์šฐ๋„ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„๋ณต์žก๋„ ์ค„์ด๋Š” ๋ฒ•

    ์‹œ๊ฐ„ ๋ณต์žก๋„์—์„œ ๋ฐ˜๋ณต๋ฌธ์ด ๊ฐ€์žฅ ์‹œ๊ฐ„ ์†Œ๋ชจ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ˜๋ณต๋ฌธ์˜ ์ˆซ์ž๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

    ๋งˆ์ง€๋ง‰ ๋ฐฉ๋ฒ•์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์ ˆํ•˜๊ฒŒ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์ด์ง„ ํƒ์ƒ‰, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋ฐฐ์—ด๊ณผ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ์ฐจ์ด


๊ฒฐ๋ก ์€ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ณผ ํƒ์ƒ‰์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด ๋ฐฐ์—ด์„ ์จ์•ผํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋ฉด ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์จ์•ผํ•ฉ๋‹ˆ๋‹ค.

  • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์˜ ์ฐจ์ด

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

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

  • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ์ฐจ์ด

    ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด ์ค‘ ๋” ์ข‹์€ ์„ฑ๋Šฅ์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

    1) ๋ฐ์ดํ„ฐ ํƒ์ƒ‰

    ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ : ์ˆœ์ฐจ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    ๋ฐฐ์—ด : ์ž„์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด์„œ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ฐฐ์—ด์€ O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    2) ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ

    ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ : ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ–‰์œ„ ์ž์ฒด์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ’๋งŒ ๊ฐˆ์•„ ๋ผ์›Œ์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๋งจ ์ฒ˜์Œ์ด ์•„๋‹ˆ๊ณ  ๊ทธ ์ดํ›„๋ผ๋ฉด ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ๊ฐ€์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๋งจ ์•ž์ด๋ผ๋ฉด, O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

    2. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๋งจ ์•ž ๊ทธ ์ดํ›„๋ผ๋ฉด O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.


      ๋ฐฐ์—ด : ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งจ ์ฒ˜์Œ์ด๋‚˜ ๊ทธ ์ดํ›„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ ๊ทธ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ „๋ถ€ ํ•œ ์นธ์”ฉ ๋’ค๋กœ ๋ฏธ๋ค„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ๋ฐฐ์—ด์— ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋งจ ๋’ค์— ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ์ด ๋•Œ๋Š” O(1)์ž…๋‹ˆ๋‹ค.

    3. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งจ ๋’ค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ์ถ”๊ฐ€๋˜๋Š” ๋ฐ์ดํ„ฐ ์œ„์น˜ ์ดํ›„์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์„ ํ•œ ์นธ์”ฉ ๋ฏธ๋ค„์•ผํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    4. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๋งจ ๋’ค์ด๊ณ  ๋ฐฐ์—ด์— ๊ณต๊ฐ„์ด ๋‚จ์•„์žˆ๋‹ค๋ฉด, O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

3. Hash Function, HashTable์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.


ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด๋ž€? ์—ฐ๊ด€ ๋ฐฐ์—ด์˜ ์ผ์ข…์œผ๋กœ, ํ‚ค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์žฅ์  : ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.

๋‹จ์  : ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ด€๋ จ ์šฉ์–ด

    ํ•ด์‹œ ํ…Œ์ด๋ธ” : ์—ฐ๊ด€ ๋ฐฐ์—ด์˜ ๊ตฌํ˜„ ํ˜•ํƒœ๋กœ ํ•ด์‹œ, ํ•ด์‹œ ํ•จ์ˆ˜, ํ•ด์‹ฑ, ๋ฒ„ํ‚ท, ์Šฌ๋กฏ ๋“ฑ์˜ ๊ฐœ๋…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    ๋ฒ„ํ‚ท๊ณผ ์Šฌ๋กฏ : ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ’์€ ๋ฒ„ํ‚ท(bucket)๊ณผ ์Šฌ๋กฏ(slot)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ˜•ํƒœ์˜ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ๋‹ค.

    (์ด ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ๋ฒ„ํ‚ท์ด๋ผ๊ณ  ํ‘œํ˜„ ํ•˜๊ธฐ๋„ ํ•จ)

    • ๋ฒ„ํ‚ท(bucket) : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šฌ๋กฏ์„ ์ €์žฅํ•˜๋Š” ๋ ˆ์ฝ”๋“œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ๋ฒ„ํ‚ท์˜ ๊ฐฏ์ˆ˜๋Š” ๊ณ ์ •์ ์ด๋‹ค.

    • ์Šฌ๋กฏ(slot) : ํ•ด์‹œ์™€ ๋งคํ•‘๋˜๋Š” ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ, ํ•˜๋‚˜์˜ ๋ฒ„ํ‚ท ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šฌ๋กฏ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šฌ๋กฏ์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

      ํ•ด์‹œ(hash) : ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์–ป๋Š” ๊ฐ’์œผ๋กœ, ํ•ด์‹œ๋ฅผ ์ธ๋ฑ์Šค ๋˜๋Š” ์ฃผ์†Œ๋กœ ์‚ผ์•„ ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๋ฒ„ํ‚ท(bucket) ๋˜๋Š” ์Šฌ๋กฏ(slot)์— ์ ‘๊ทผํ•œ ๋’ค ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ๋“ฑ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

      ํ•ด์‹œ ํ•จ์ˆ˜(hash function) : ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ(key)๋ฅผย ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ(ํ•ด์‹œ)๋กœ ๋งคํ•‘ํ•˜๋Š” ํ•จ์ˆ˜.

      ์ด ๋•Œ, ๋งคํ•‘ ์ „ ์›๋ž˜ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ย ํ‚ค(key), ๋งคํ•‘ ํ›„ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ย ํ•ด์‹œ(hash)๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, key -> hash๋กœ ๋งคํ•‘ ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ•ด์‹œํ•จ์ˆ˜๋ผ ํ•œ๋‹ค.

      ์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์กฐ๊ฑด

    • ํ•ด์‹œ ๊ฐ’์ด ํ•ด์‹œ ํ…Œ์ด๋ธ” ์ฃผ์†Œ ์˜์—ญ ๋‚ด์—์„œ ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ ๋˜์–ด์•ผ ํ•œ๋‹ค.

    • ์ถฉ๋Œ์ด ์ ์–ด์•ผ ํ•œ๋‹ค. (์ค‘๋ณต๊ฐ’ ์ตœ์†Œํ™”)

    • ๊ณ„์‚ฐ์ด ๋นจ๋ผ์•ผ ํ•œ๋‹ค.

      ํ•ด์‹ฑ : key -> hash -> value๋กœ ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ, ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํƒ์ƒ‰์„ ๊ฐ€๋ฆฌ์ผœ ํ•ด์‹ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ•ด์‹ฑ์€ ๋งค์šฐย ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์šฉ๋„๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ํ‰๊ท ์ ์œผ๋กœ O(1)์˜ ํƒ์ƒ‰ ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค. (์ถฉ๋Œ์ด ๋งŽ์„ ๊ฒฝ์šฐ ๋” ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.)ํ•ด์‹ฑ์˜ ์„ฑ๋Šฅ์€ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์„ฑ๋Šฅ๊ณผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

      ํ•ด์‹œ ์ถฉ๋Œ(hash collision) : ํ•ด์‹œํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ‚ค์— ๋Œ€ํ•ด ๋™์ผํ•œ ํ•ด์‹œ๊ฐ’์„ ๋‚ด๋Š” ๊ฒฝ์šฐ๋กœ,

      h(k1) == h(k2)ย ์„ฑ๋ฆฝํ•˜๋ฉด ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒ ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. (h : ํ•ด์‹œํ•จ์ˆ˜. k1, k2 : ์ž„์˜์˜ key๊ฐ’) ์ด๋•Œ, k1, k2 ๋ฅผ ๋™์˜์–ด(synonym)๋ผ ํ•œ๋‹ค. ํ•ด์‹ฑ์„ ํ•  ๋•Œ, ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ ์ถฉ๋Œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

      ๋งค์šฐ ํฐ ์ง‘ํ•ฉ(ex : ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ ์ด๋ฆ„)์„ ๋น„๊ต์  ์ž‘์€ ํฌ๊ธฐ์˜ ๊ณต๊ฐ„(hash table size)์— ๋งคํ•‘ ์‹œํ‚ฌ ๋•Œ, ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ table size๊ฐ€ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•œ ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ํ•ด์‹œ ์ถฉ๋Œ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋น„๋‘˜๊ธฐ์ง‘ ์›๋ฆฌ)

  • ํ•ด์‹œ ์ถฉ๋Œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

    1. Chainingย : ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋ฉด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ด์–ด ๋‚˜๊ฐ€ ์ถฉ๋Œ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•

    2. Open adressingย : ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋ฉด ๋‹ค๋ฅธ ๋ฒ„์ผ“์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹

      Chaining : chain์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ๋˜์–ด ์ด์–ด๋‚˜๊ฐ„๋‹ค๋Š” ์˜๋ฏธ๋กœ, ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ด์–ด ๋‚˜๊ฐ„๋‹ค. ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐ ์‹œ์ผœ์ฃผ์‹œํ‚ค ๋•Œ๋ฌธ์— ํฌ๊ธฐ ์ œํ•œ์— ์žˆ์–ด์„œ ์ž์œ ๋กญ๋‹ค.

      Open adressing : ๋‹ค๋ฅธ ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์ทจ์ง€์—์„œ open addressing์ด๋ผ๊ณ  ํ•˜๋Š”๋“ฏ ํ•˜๋‹ค. Closed hashing ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.Open hashing๊ณผ ๋ฐ˜๋Œ€๋กœ Slot ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์–ด์„œ(๋‹ซํ˜€์žˆ๋Š” ํ˜•ํƒœ๋ผ) Closed hashing์ด๋ผ๊ณ  ํ•˜๋Š”๋“ฏํ•˜๋‹ค.

      ์ข…๋ฅ˜

    • ์„ ํ˜• ์กฐ์‚ฌ๋ฒ•(Linear probing)ย : ํ•ด์‹œ์ถฉ๋Œ ์‹œ ๊ณ ์ •ํญ(ex : 1์นธ)์„ ์˜ฎ๊ฒจ ๋‹ค์Œ ๋ฒ„ํ‚ท์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์ด์ฐจ ์กฐ์‚ฌ๋ฒ•(Quadratic probing)ย : ํ•ด์‹œ์ถฉ๋Œ ์‹œ ์ œ๊ณฑ์ˆ˜ ๋งŒํผ ๊ฑด๋„ˆ ๋›ฐ์–ด ๋ฒ„ํ‚ท์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•(1,4,9,...)
    • ์ด์ค‘ ํ•ด์‹ฑ(Double hashing) (or rehashing)ย : ์ถฉ๋Œ ์‹œ ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€