๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

ํ—ค์ด ํ•˜๋ธŒ๋ฅด! ๋‚˜๋Š” ๊ธฐ์‚ฌ์˜ ๋ฒˆ์—ญ์„ ๋‹น์‹ ์˜ ๊ด€์‹ฌ์— ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค
"๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?".

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ด€ํ•ด์„œ๋Š” ๋ญ”๊ฐ€ ๋น ์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž‘๊ณ  ์œ ์šฉํ•œ SQLite๋ถ€ํ„ฐ ๊ฐ•๋ ฅํ•œ Teradata๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ์‚ฌ๋Š” ๋ช‡ ๊ฐœ๋ฟ์ž…๋‹ˆ๋‹ค. "howdoesarelationaldatabasework"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ ์€์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด ๊ธ€๋“ค์€ ์งง์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๊ธฐ์ˆ (BigData, NoSQL ๋˜๋Š” JavaScript)์„ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ๋” ์ž์„ธํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Œ€ํ•™ ๊ณผ์ •, ์—ฐ๊ตฌ ๋…ผ๋ฌธ ๋ฐ ์„œ์  ์™ธ๋ถ€์—์„œ ์„ค๋ช…ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜๊ณ  ์ง€๋ฃจํ•ฉ๋‹ˆ๊นŒ?

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

๊ฐœ๋ฐœ์ž๋กœ์„œ ์ €๋Š” ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ 40๋…„ ์ด์ƒ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ด์œ ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋…„์— ๊ฑธ์ณ ์ €๋Š” ์ œ๊ฐ€ ๋งค์ผ ์‚ฌ์šฉํ•˜๋Š” ์ด ์ด์ƒํ•œ ๋ธ”๋ž™๋ฐ•์Šค๋ฅผ ์ง„์ •์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋ฐฑ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์ด์œ ๋Š” ๊ทธ๋“ค์ด ์œ ์šฉํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์ง€๋งŒ ์ด ๊ด‘๋ฒ”์œ„ํ•œ ์ฃผ์ œ๋ฅผ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์‹œ๊ฐ„์ด๋‚˜ ์˜ํ–ฅ์ด ์—†์—ˆ๋‹ค๋ฉด ์ด ๊ธฐ์‚ฌ๋ฅผ ์ฝ์–ด ๋ณด์„ธ์š”.

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

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

์ด ๊ธ€์€ ๋งŽ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ธธ๊ณ  ๊ธฐ์ˆ ์ ์ธ ๊ธ€์ด๋ฏ€๋กœ ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋๊นŒ์ง€ ์ฝ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฐœ๋…์€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์ง€์‹์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์ด ๊ธฐ์‚ฌ๋Š” 3๊ฐœ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•˜์œ„ ์ˆ˜์ค€ ๋ฐ ์ƒ์œ„ ์ˆ˜์ค€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ ์š”์†Œ ๊ฐœ์š”
  • ์ฟผ๋ฆฌ ์ตœ์ ํ™” ํ”„๋กœ์„ธ์Šค ๊ฐœ์š”
  • ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฒ„ํผ ํ’€ ๊ด€๋ฆฌ ๊ฐœ์š”

๊ธฐ๋ณธ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

๋ช‡ ๋…„ ์ „(๋ฉ€๊ณ  ๋จผ ์€ํ•˜๊ณ„์—์„œ...) ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์ด ์ฝ”๋”ฉํ•˜๋Š” ์ž‘์—… ์ˆ˜๋ฅผ ์ •ํ™•ํžˆ ์•Œ์•„์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋Š๋ฆฐ ์ปดํ“จํ„ฐ์˜ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•  ์—ฌ์œ ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งˆ์Œ ์†์œผ๋กœ ์•Œ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์ด๋Ÿฌํ•œ ๊ฐœ๋… ์ค‘ ์ผ๋ถ€๋ฅผ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจ์…‰๋„ ์†Œ๊ฐœํ• ๊ฒŒ์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค.

O(1) ๋Œ€ O(n2)

์š”์ฆ˜์—๋Š” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๊ด€์‹ฌ์„ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์˜ ๋ง์ด ๋งž์Šต๋‹ˆ๋‹ค!

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

๊ฐœ๋…

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ฃผ์–ด์ง„ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.. ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” big O ์ˆ˜ํ•™์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‘œ๊ธฐ๋ฒ•์€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ ์ˆ˜์— ๋Œ€ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•œ ์ž‘์—… ์ˆ˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, "์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก์„ฑ์€ O(some_function())์ž…๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉด ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํŠน์ • ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด some_function(a_certain_amount_of_data) ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ, ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์•„๋‹™๋‹ˆ๋‹ค**, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ** ๋ฐ์ดํ„ฐ ์–‘์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ž‘์—… ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”์ง€. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ •ํ™•ํ•œ ์ž‘์—… ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ถ”์ •ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

์ด ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„ ๋ณต์žก์„ฑ์— ๋Œ€ํ•œ ์ž‘์—… ์ˆ˜์™€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์–‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ ๋ˆˆ๊ธˆ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ์–‘์ด 1์–ต์—์„œ 1์–ต์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • O(1) ๋˜๋Š” ์ƒ์ˆ˜ ๋ณต์žก๋„๋Š” ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ƒ์ˆ˜ ๋ณต์žก๋„๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
  • O(๊ธฐ๋ก(n)) ์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด๋„ ์—ฌ์ „ํžˆ ๋‚ฎ์€ ์ˆ˜์ค€.
  • ์ตœ์•…์˜ ๋‚œ์ด๋„ - O(n2), ์—ฐ์‚ฐ ์ˆ˜๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ.
  • ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ํ•ฉ๋ณ‘์ฆ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ

๋ฐ์ดํ„ฐ ์–‘์ด ์ ์„ ๊ฒฝ์šฐ O(1)๊ณผ โ€‹โ€‹O(n2)์˜ ์ฐจ์ด๋Š” ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2000๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • O(1) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—… ๋น„์šฉ์ด 1ํšŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • O(log(n)) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 7๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 2๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n*log(n)) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 14๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 4๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.

O(1)๊ณผ โ€‹โ€‹O(n2)์˜ ์ฐจ์ด๋Š” ์ปค ๋ณด์ด์ง€๋งŒ(4๋งŒ ์—ฐ์‚ฐ) ๋ˆˆ์„ ๊นœ๋ฐ•์ผ ์‹œ๊ฐ„์ธ ์ตœ๋Œ€ 2ms๋ฅผ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ตœ์‹  ํ”„๋กœ์„ธ์„œ๋Š” ๋‹ค์Œ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น ์ˆ˜์–ต ๊ฑด์˜ ์ž‘์—…. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋งŽ์€ IT ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ๋Šฅ๊ณผ ์ตœ์ ํ™”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, ์—„์ฒญ๋‚œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ์ด ๊ฐœ๋…์„ ์•„๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด 1๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š์Œ):

  • O(1) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—… ๋น„์šฉ์ด 1ํšŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • O(log(n)) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 14๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 1๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n*log(n)) ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 14๊ฐœ์˜ ์ž‘์—… ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค.
  • O(n2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 1๋ฒˆ์˜ ์ž‘์—… ๋น„์šฉ์„ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ณ„์‚ฐ์„ ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ O(n2) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปคํ”ผ๋ฅผ ๋งˆ์‹ค ์‹œ๊ฐ„์ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์‹ฌ์ง€์–ด ๋‘ ์ž”!). ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์— 0์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•˜๋ฉด ๋‚ฎ์ž ์„ ์ž˜ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์ƒ๊น๋‹ˆ๋‹ค.

๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€์ž

๊ท€ํ•˜์˜ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  • ์ข‹์€ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์กฐํšŒ๋Š” O(1)์—์„œ ์š”์†Œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ๊ท ํ˜•์ด ์ž˜ ์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด O(log(n))์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด O(n)์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ตœ๊ณ ์˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก์„ฑ์€ O(n*log(n))์ž…๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก์„ฑ์€ O(n2)์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋‹ค์Œ ๋ถ€๋ถ„์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์—๋Š” ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ‰๊ท  ์‚ฌ๋ก€ ์‹œ๋‚˜๋ฆฌ์˜ค
  • ์ตœ์„ ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค
  • ๊ทธ๋ฆฌ๊ณ  ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค

์‹œ๊ฐ„ ๋ณต์žก์„ฑ์€ ์ข…์ข… ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ๋ณต์žก์„ฑ์€ ๋‹ค์Œ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„
  • ๋””์Šคํฌ I/O ์†Œ๋น„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌผ๋ก  n2๋ณด๋‹ค ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • n4: ์ด๊ฑด ์ •๋ง ๋”์ฐํ•ด์š”! ์–ธ๊ธ‰๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์ผ๋ถ€๋Š” ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 3n: ์ด๊ฑด ๋” ์‹ฌํ•ด์š”! ์ด ๊ธฐ์‚ฌ์˜ ์ค‘๊ฐ„ ๋ถ€๋ถ„์—์„œ ๋ณด๊ฒŒ ๋  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์‹ค์ œ๋กœ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค).
  • ํŒฉํ† ๋ฆฌ์–ผ n: ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋กœ๋„ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • nn: ์ด๋Ÿฐ ๋ณต์žก์„ฑ์— ์ง๋ฉดํ–ˆ๋‹ค๋ฉด, ์ด๊ฒƒ์ด ์ •๋ง๋กœ ๋‹น์‹ ์˜ ํ™œ๋™ ๋ถ„์•ผ์ธ์ง€ ์ž๋ฌธํ•ด ๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค...

์ฐธ๊ณ : ๋‚˜๋Š” ๋น… O ์ง€์ •์— ๋Œ€ํ•œ ์‹ค์ œ ์ •์˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๋‹จ์ง€ ์•„์ด๋””์–ด๋งŒ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” ๋‹ค์Œ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ํ‚คํ”ผ๋””์•„ ์‹ค์ œ(์ ๊ทผ์ ) ์ •์˜๋ฅผ ์œ„ํ•ด.

๋ณ‘ํ•ฉ์ •๋ ฌ

์ปฌ๋ ‰์…˜์„ ์ •๋ ฌํ•ด์•ผ ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”? ๋ฌด์—‡? sort() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค... ์ข‹์•„์š”, ์ข‹์€ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ์ด sort() ํ•จ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์— ์ค‘์ ์„ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ์ •๋ ฌ. ์ง€๊ธˆ์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ์™œ ์œ ์šฉํ•œ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ฟผ๋ฆฌ ์ตœ์ ํ™” ๋ถ€๋ถ„ ์ดํ›„์— ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณ‘ํ•ฉ ์ •๋ ฌ์„ ์ดํ•ดํ•˜๋ฉด ๋‚˜์ค‘์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ธ ์ž‘์—…์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ์–ด์šธ๋ฆฌ๋‹ค (ํ•ฉ๋ณ‘์กฐํ•ฉ).

๋ณ‘ํ•ฉ

๋งŽ์€ ์œ ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. N/2 ํฌ๊ธฐ์˜ ์ •๋ ฌ๋œ ๋ฐฐ์—ด 2๊ฐœ๋ฅผ N ์š”์†Œ ์ •๋ ฌ ๋ฐฐ์—ด๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ๋“œ๋Š” ์ž‘์—… ๋น„์šฉ์€ N๊ฐœ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ๋ณ‘ํ•ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

์ด ๊ทธ๋ฆผ์€ ์ตœ์ข… ์ •๋ ฌ๋œ 8๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด 2๊ฐœ์˜ 4๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ๋งŒ ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 4๊ฐœ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ด ๋ชจ๋‘ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ:

  • 1) ๋‘ ๋ฐฐ์—ด์˜ ๋‘ ํ˜„์žฌ ์š”์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค (์ฒ˜์Œ์—๋Š” ํ˜„์žฌ = ์ฒซ ๋ฒˆ์งธ)
  • 2) ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ๊ฐ€์ ธ์™€ 8 ์š”์†Œ ๋ฐฐ์—ด์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • 3) ๊ฐ€์žฅ ์ž‘์€ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ ๋ฐฐ์—ด์˜ ๋‹ค์Œ ์š”์†Œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด ์ค‘ ํ•˜๋‚˜์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ 1,2,3์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ ๋ฐฐ์—ด์˜ ๋‚˜๋จธ์ง€ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ 8๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

์ด๋Š” 4๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์ด ๋ชจ๋‘ ์ •๋ ฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ฐฐ์—ด์—์„œ "๋’ค๋กœ ๋Œ์•„๊ฐˆ" ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ํŠธ๋ฆญ์„ ์ดํ•ดํ–ˆ์œผ๋ฏ€๋กœ ๋ณ‘ํ•ฉ์„ ์œ„ํ•œ ์˜์‚ฌ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

array mergeSort(array a)
   if(length(a)==1)
      return a[0];
   end if

   //recursive calls
   [left_array right_array] := split_into_2_equally_sized_arrays(a);
   array new_left_array := mergeSort(left_array);
   array new_right_array := mergeSort(right_array);

   //merging the 2 small ordered arrays into a big one
   array result := merge(new_left_array,new_right_array);
   return result;

๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆˆ ๋‹ค์Œ ๋” ์ž‘์€ ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์•„ ์›๋ž˜ ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค(์ฐธ๊ณ : ์ด ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„ํ•  ์ •๋ณต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค). ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ฒ˜์Œ ๋ดค์„ ๋• ์ดํ•ด๊ฐ€ ์•ˆ ๋์–ด์š”. ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ XNUMX๋‹จ๊ณ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

  • ๋ถ„ํ•  ๋‹จ๊ณ„(์–ด๋ ˆ์ด๊ฐ€ ๋” ์ž‘์€ ์–ด๋ ˆ์ด๋กœ ๋ถ„ํ• ๋จ)
  • ์ •๋ ฌ ๋‹จ๊ณ„์—์„œ๋Š” ์ž‘์€ ๋ฐฐ์—ด์„ ๊ฒฐํ•ฉํ•˜์—ฌ(union์„ ์‚ฌ์šฉํ•˜์—ฌ) ๋” ํฐ ๋ฐฐ์—ด์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ถ„ํ•  ๋‹จ๊ณ„

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

๋ถ„ํ•  ๋‹จ๊ณ„์—์„œ๋Š” ๋ฐฐ์—ด์ด 3๋‹จ๊ณ„์— ๊ฑธ์ณ ๋‹จ์ผ ๋ฐฐ์—ด๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. ๊ณต์‹์ ์ธ ๋‹จ๊ณ„ ์ˆ˜๋Š” log(N)์ž…๋‹ˆ๋‹ค(N=8, log(N) = 3์ด๋ฏ€๋กœ).

์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ฒœ์žฌ๋‹ค! ํ•œ๋งˆ๋””๋กœ - ์ˆ˜ํ•™. ์•„์ด๋””์–ด๋Š” ๊ฐ ๋‹จ๊ณ„๊ฐ€ ์›๋ž˜ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 2๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ๊ณ„ ์ˆ˜๋Š” ์›๋ž˜ ๋ฐฐ์—ด์„ ๋‘ ๊ฐœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋กœ๊ทธ(๋ฐ‘ 2)์˜ ์ •ํ™•ํ•œ ์ •์˜์ž…๋‹ˆ๋‹ค.

์ •๋ ฌ ๋‹จ๊ณ„

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

์ •๋ ฌ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹จ์ผ(๋‹จ์ผ ์š”์†Œ) ๋ฐฐ์—ด๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์—ฌ๋Ÿฌ ๋ณ‘ํ•ฉ ์ž‘์—…์„ ์ ์šฉํ•˜๋ฉฐ ์ด ๋น„์šฉ์€ N = 8 ์ž‘์—…์ž…๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—๋Š” ๊ฐ๊ฐ 4๊ฐœ์˜ ์ž‘์—…์ด ํ•„์š”ํ•œ 2๊ฐœ์˜ ๋ณ‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„์—๋Š” ๊ฐ๊ฐ 2๊ฐœ์˜ ์ž‘์—…์ด ํ•„์š”ํ•œ 4๊ฐœ์˜ ๋ณ‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” 1๊ฐœ์˜ ์ž‘์—…์ด ํ•„์š”ํ•œ 8๊ฐœ์˜ ๋ณ‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

log(N) ๋‹จ๊ณ„๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด ๋น„์šฉ N * log(N) ์ž‘์—….

๋ณ‘ํ•ฉ ์ •๋ ฌ์˜ ์žฅ์ 

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๊ฐ•๋ ฅํ•œ๊ฐ€์š”?

์™œ๋ƒํ•˜๋ฉด :

  • ์ƒˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ ๋ฐฐ์—ด์„ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๊ณต๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ in-์žฅ์†Œ (์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์—†์ด ์ •๋ ฌ)

  • ์ƒ๋‹นํ•œ ๋””์Šคํฌ I/O ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋””์Šคํฌ ๊ณต๊ฐ„๊ณผ ์†Œ๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ถ€๋ถ„๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ด ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ์ด๋Š” 100MB ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋งŒ์œผ๋กœ ์ˆ˜ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ํ…Œ์ด๋ธ”์„ ์ •๋ ฌํ•ด์•ผ ํ•  ๋•Œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์™ธ๋ถ€ ์ •๋ ฌ.

  • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ/์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ถ„์‚ฐ ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ•˜๋‘ก (๋น…๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ)

  • ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‚ฉ์„ ๊ธˆ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ •๋ง์ž…๋‹ˆ๋‹ค!).

์ด ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋Œ€๋ถ€๋ถ„์˜(์ „๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์œ ์ผํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋” ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๊ธ€์„ ์ฝ์–ด๋ณด์„ธ์š” ์—ฐ๊ตฌ ์ž‘์—…, ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์žฅ๋‹จ์ ์„ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด, ํŠธ๋ฆฌ ๋ฐ ํ•ด์‹œ ํ…Œ์ด๋ธ”

์ด์ œ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ์ •๋ ฌ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ–ˆ์œผ๋‹ˆ, 3๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๊ทธ๋“ค์ด ํ˜„๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ์ดˆ. ์ปจ์…‰๋„ ์†Œ๊ฐœํ• ๊ฒŒ์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค.

ะœะฐััะธะฒ

XNUMX์ฐจ์› ๋ฐฐ์—ด์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ๋ฐฐ์—ด๋กœ ์ƒ๊ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

์ด 2์ฐจ์› ๋ฐฐ์—ด์€ ํ–‰๊ณผ ์—ด์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

  • ๊ฐ ์ค„์€ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์—ด์€ ์—”ํ„ฐํ‹ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์†์„ฑ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ์—ด์€ ํŠน์ • ์œ ํ˜•(์ •์ˆ˜, ๋ฌธ์ž์—ด, ๋‚ ์งœ...)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ํŽธ๋ฆฌํ•˜์ง€๋งŒ ํŠน์ • ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์˜๊ตญ์—์„œ ์ผํ•˜๋Š” ๋ชจ๋“  ๋‚จ์„ฑ์„ ์ฐพ์œผ๋ ค๋ฉด ๊ฐ ํ–‰์„ ๋ณด๊ณ  ํ•ด๋‹น ํ–‰์ด ์˜๊ตญ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. N๋ฒˆ์˜ ๊ฑฐ๋ž˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.์–ด๋””์—์„œ N - ์ค„ ์ˆ˜, ๋‚˜์˜์ง€ ์•Š์€๋ฐ ๋” ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋‚˜๋ฌด์— ๋Œ€ํ•ด ์•Œ์•„๊ฐˆ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”์„ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํž™ ๊ตฌ์„ฑ ํ…Œ์ด๋ธ” ๋ฐ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ํ™•์žฅ ๋ฐฐ์—ด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์—ด ๊ทธ๋ฃน์—์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐ”๊พธ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋ฆฌ ๋ฐ ์ธ๋ฑ์Šค

์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ํŠน๋ณ„ํ•œ ์†์„ฑ์„ ๊ฐ€์ง„ ์ด์ง„ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์˜ ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์— ์ €์žฅ๋œ ๋ชจ๋“  ํ‚ค๋ณด๋‹ค ํผ
  • ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์— ์ €์žฅ๋œ ๋ชจ๋“  ํ‚ค๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‹œ๊ฐ์ ์œผ๋กœ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ด…์‹œ๋‹ค

์ƒ๊ฐ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

์ด ํŠธ๋ฆฌ์—๋Š” N = 15๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 208์„ ์ฐพ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ‚ค๊ฐ€ 136์ธ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 136<208์ด๋ฏ€๋กœ ๋…ธ๋“œ 136์˜ ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  • 398>208 ๋”ฐ๋ผ์„œ ๋…ธ๋“œ 398์˜ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 250>208 ๋”ฐ๋ผ์„œ ๋…ธ๋“œ 250์˜ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 200<208์ด๋ฏ€๋กœ ๋…ธ๋“œ 200์˜ ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 200์—๋Š” ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์กด์žฌํ•œ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ 200์— ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค).

์ด์ œ ๋‚ด๊ฐ€ 40์„ ์ฐพ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ‚ค๊ฐ€ 136์ธ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 136 > 40์ด๋ฏ€๋กœ ๋…ธ๋“œ 136์˜ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  • 80 > 40์ด๋ฏ€๋กœ ๋…ธ๋“œ 80์˜ ์™ผ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 40= 40, ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๋‚ด๋ถ€์˜ ํ–‰ ID(๊ทธ๋ฆผ์—๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ…Œ์ด๋ธ”์—์„œ ์ง€์ •๋œ ํ–‰ ID๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ํ–‰ ID๋ฅผ ์•Œ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ด๋ธ”์˜ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฆ‰์‹œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋‘ ๊ฒ€์ƒ‰ ๋ชจ๋‘ ํŠธ๋ฆฌ ๋‚ด๋ถ€์˜ ์ˆ˜์ค€ ์ˆ˜๋งŒํผ ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ ์ •๋ ฌ ๋ถ€๋ถ„์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์–ด๋ณด๋ฉด log(N) ์ˆ˜์ค€์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐํ˜€, ๊ฒ€์ƒ‰ ๋น„์šฉ ๋กœ๊ทธ(N), ๋‚˜์˜์ง€ ์•Š๋‹ค!

์šฐ๋ฆฌ์˜ ๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€์ž

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋งค์šฐ ์ถ”์ƒ์ ์ด๋ฏ€๋กœ ๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์ •์ˆ˜ ๋Œ€์‹  ์ด์ „ ํ‘œ์— ์žˆ๋Š” ๋ˆ„๊ตฐ๊ฐ€์˜ ๊ตญ๊ฐ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ํ…Œ์ด๋ธ”์˜ "๊ตญ๊ฐ€" ํ•„๋“œ(3์—ด)๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์˜๊ตญ์—์„œ ์ผํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด
  • ์˜๊ตญ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  • "UKnode" ๋‚ด์—์„œ ์˜๊ตญ ๊ทผ๋กœ์ž ๊ธฐ๋ก์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๊ฒ€์ƒ‰์—๋Š” N ์ž‘์—… ๋Œ€์‹  log(N) ์ž‘์—…์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์ œ์‹œํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค.

ํ‚ค(์˜ˆ: ํ•„๋“œ ๊ทธ๋ฃน)๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ํ•œ ๋ชจ๋“  ํ•„๋“œ ๊ทธ๋ฃน(๋ฌธ์ž์—ด, ์ˆซ์ž, 2์ค„, ์ˆซ์ž ๋ฐ ๋ฌธ์ž์—ด, ๋‚ ์งœ...)์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด์‡  ์‚ฌ์ด์—์„œ ์ˆœ์„œ๋ฅผ ์ •ํ•˜์„ธ์š” (์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค).

B+ํŠธ๋ฆฌ์ธ๋ฑ์Šค

์ด ํŠธ๋ฆฌ๋Š” ํŠน์ • ๊ฐ’์„ ์–ป๋Š” ๋ฐ๋Š” ํšจ๊ณผ์ ์ด์ง€๋งŒ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ’ ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ. ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด ๋‘ ๊ฐ’ ์‚ฌ์ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N)์˜ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค(์˜ˆ: ํŠธ๋ฆฌ ์ˆœํšŒ ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ). ๊ฒŒ๋‹ค๊ฐ€ ์ด ์ž‘์—…์€ ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ์ฝ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ I/O ์นœํ™”์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„ ์š”์ฒญ. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” B+Tree๋ผ๋Š” ์ด์ „ ํŠธ๋ฆฌ์˜ ์ˆ˜์ •๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. B+ํŠธ๋ฆฌ ํŠธ๋ฆฌ์—์„œ:

  • ๊ฐ€์žฅ ๋‚ฎ์€ ๋…ธ๋“œ(์žŽ)๋งŒ ๊ฐ€๊ฒŒ ์ •๋ณด (๊ด€๋ จ ํ…Œ์ด๋ธ”์˜ ํ–‰ ์œ„์น˜)
  • ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค ๋ผ์šฐํŒ…์„ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋…ธ๋“œ๋กœ ๊ฒ€์ƒ‰ ์ค‘.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

๋ณด์‹œ๋‹ค์‹œํ”ผ ์—ฌ๊ธฐ์—๋Š” ๋” ๋งŽ์€ ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋‘ ๋ฒˆ). ์‹ค์ œ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๋…ธ๋“œ(๊ด€๋ จ ํ…Œ์ด๋ธ”์˜ ํ–‰ ์œ„์น˜๋ฅผ ์ €์žฅํ•จ)๋ฅผ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ถ”๊ฐ€ ๋…ธ๋“œ์ธ "๊ฒฐ์ • ๋…ธ๋“œ"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒ€์ƒ‰ ๋ณต์žก๋„๋Š” ์—ฌ์ „ํžˆ O(log(N))์ž…๋‹ˆ๋‹ค(ํ•œ ๋‹จ๊ณ„๋งŒ ๋” ์žˆ์Œ). ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ํ•˜์œ„ ์ˆ˜์ค€์˜ ๋…ธ๋“œ๋Š” ํ›„์† ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค..

์ด B+Tree๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 40์—์„œ 100 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒฝ์šฐ:

  • ์ด์ „ ํŠธ๋ฆฌ์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ 40(๋˜๋Š” 40์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ 40 ์ดํ›„ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ’)์„ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ 40๋ช…์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ง์ ‘ ์ƒ์†์ธ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 100๋ช…์˜ ์ƒ์†์ธ์„ ์ˆ˜์ง‘ํ•˜์„ธ์š”.

M๊ฐœ์˜ ํ›„์† ํ•ญ๋ชฉ์„ ์ฐพ์•˜๊ณ  ํŠธ๋ฆฌ์— N๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š” ๋ฐ๋Š” ์ด์ „ ํŠธ๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ log(N) ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋‹จ ์ด ๋…ธ๋“œ๋ฅผ ์–ป์œผ๋ฉด M๊ฐœ์˜ ์ž‘์—…์—์„œ M๊ฐœ์˜ ํ›„์† ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํ•ด๋‹น ํ›„์† ๋…ธ๋“œ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒ€์ƒ‰ ๋น„์šฉ์€ M+log(N)์ž…๋‹ˆ๋‹ค. ์ด์ „ ํŠธ๋ฆฌ์˜ N๊ฐœ ์ž‘์—…๊ณผ ๋น„๊ตํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ „์ฒด ํŠธ๋ฆฌ(M+log(N) ๋…ธ๋“œ๋งŒ)๋ฅผ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. M์ด ์ž‘๊ณ (์˜ˆ: 200ํ–‰) N์ด ํฌ๋‹ค๋ฉด(1ํ–‰) ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—๋Š” (๋‹ค์‹œ!) ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋”ฐ๋ผ์„œ ์—ฐ๊ด€๋œ B+Tree ์ธ๋ฑ์Šค)์—์„œ ํ–‰์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ:

  • B+ํŠธ๋ฆฌ ๋‚ด๋ถ€์˜ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •๋ ฌ๋˜์ง€ ์•Š์€ ํŠธ๋ฆฌ ๋‚ด๋ถ€์˜ ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • B+Tree์—์„œ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ์ˆ˜์ค€ ์ˆ˜๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด O(log(N)) ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, B+Tree๋Š” ์ž๋™ ์ •๋ ฌ๋˜๊ณ  ๊ท ํ˜•์„ ์ด๋ฃจ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์ด๋Š” ์Šค๋งˆํŠธ ์‚ญ์ œ ๋ฐ ์‚ฝ์ž… ์ž‘์—…์„ ํ†ตํ•ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. B+ ํŠธ๋ฆฌ์˜ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ๋น„์šฉ์€ O(log(N))์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๋ถ„ ์ค‘ ์ผ๋ถ€๋Š” ๊ทธ๋Ÿฐ ๋ง์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ •๋ง, ํ…Œ์ด๋ธ”์—์„œ ํ–‰์˜ ๋น ๋ฅธ ์‚ฝ์ž…/์—…๋ฐ์ดํŠธ/์‚ญ์ œ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ฐ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” O(log(N)) ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ๋” ์ปค์ง‘๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜ ๊ด€๋ฆฌ์ž (๊ธ€ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

์ž์„ธํ•œ ๋‚ด์šฉ์€ Wikipedia ๊ธฐ์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. B+๋‚˜๋ฌด. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— B+Tree๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ดํŽด๋ณด์„ธ์š”. ์ด ๋ฌธ์„œ ะธ ์ด ๋ฌธ์„œ ์ตœ๊ณ ์˜ MySQL ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ. ๋‘˜ ๋‹ค InnoDB(MySQL ์—”์ง„)๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

์ฐธ๊ณ : ํ•œ ๋…์ž๋Š” ์ €์ˆ˜์ค€ ์ตœ์ ํ™”๋กœ ์ธํ•ด B+ ํŠธ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ๊ท ํ˜•์„ ์ด๋ฃจ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œํ…Œ์ด๋ธ”

๋งˆ์ง€๋ง‰์œผ๋กœ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”์šฑ์ด ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ดํ•ดํ•˜๋ฉด ๋‚˜์ค‘์— ํ•ด์‹œ ์กฐ์ธ์ด๋ผ๊ณ  ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ธ ์ž‘์—…์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ํ•ด์‹œ ์กฐ์ธ). ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ผ๋ถ€ ๋‚ด๋ถ€ ํ•ญ๋ชฉ(์˜ˆ: ์ž ๊ธˆ ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ฒ„ํผ ํ’€, ๋‚˜์ค‘์— ์ด ๋‘ ๊ฐœ๋…์„ ๋ชจ๋‘ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ‚ค๋กœ ์š”์†Œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ะบะปัŽั‡ ๋‹น์‹ ์˜ ์š”์†Œ์— ๋Œ€ํ•œ
  • ํ•ด์‹œ ํ•จ์ˆ˜ ์—ด์‡ ์šฉ. ๊ณ„์‚ฐ๋œ ํ‚ค ํ•ด์‹œ๋Š” ์š”์†Œ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค( ์„ธ๊ทธ๋จผํŠธ ).
  • ํ‚ค ๋น„๊ต ๊ธฐ๋Šฅ. ์˜ฌ๋ฐ”๋ฅธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ฐพ์•˜์œผ๋ฉด ์ด ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๊ทธ๋จผํŠธ ๋‚ด์—์„œ ์ฐพ๊ณ  ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ

๋ช…ํ™•ํ•œ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹(1๋ถ€)

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

  • ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ 0์ด๋ฉด ์š”์†Œ๋Š” ์„ธ๊ทธ๋จผํŠธ 0์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ 1์ด๋ฉด ์š”์†Œ๋Š” ์„ธ๊ทธ๋จผํŠธ 1์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ 2์ด๋ฉด ์š”์†Œ๋Š” ์˜์—ญ 2์— ์†ํ•ฉ๋‹ˆ๋‹ค.
  • ...

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋น„๊ต ํ•จ์ˆ˜๋Š” ๋‹จ์ˆœํžˆ ๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ ๋™์ผ์„ฑ์ž…๋‹ˆ๋‹ค.

์š”์†Œ 78์„ ์–ป๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ 78์˜ ํ•ด์‹œ ์ฝ”๋“œ์ธ 8์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ 8์„ ๋ณด๊ณ  ์ฒซ ๋ฒˆ์งธ๋กœ ์ฐพ์€ ์š”์†Œ๋Š” 78์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋…€๋Š” ํ•ญ๋ชฉ 78์„ ๋‹น์‹ ์—๊ฒŒ ๋Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰ ๋น„์šฉ์€ 2๊ฐœ ์ž‘์—…๋ฟ์ž…๋‹ˆ๋‹ค. (ํ•˜๋‚˜๋Š” ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์„ธ๊ทธ๋จผํŠธ ๋‚ด์˜ ์š”์†Œ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

์ด์ œ ์š”์†Œ 59๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ 59์˜ ํ•ด์‹œ ์ฝ”๋“œ์ธ 9์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ์„ธ๊ทธ๋จผํŠธ 9์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ๋ฐœ๊ฒฌ๋œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” 99์ž…๋‹ˆ๋‹ค. 99!=59์ด๋ฏ€๋กœ ์š”์†Œ 99๋Š” ์œ ํšจํ•œ ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ๋…ผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ฒˆ์งธ ์š”์†Œ(9), ์„ธ ๋ฒˆ์งธ ์š”์†Œ(79), ..., ๋งˆ์ง€๋ง‰ ์š”์†Œ(29)๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰์—๋Š” 7๊ฐœ์˜ ์ž‘์—…์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค..

์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜

๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ฐพ๊ณ  ์žˆ๋Š” ๊ฐ€์น˜์— ๋”ฐ๋ผ ๋น„์šฉ์ด ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

์ด์ œ ํ‚ค์˜ ํ•ด์‹œ ํ•จ์ˆ˜ ๋ชจ๋“ˆ๋กœ 1์„ ๋ณ€๊ฒฝํ•˜๋ฉด(์ฆ‰, ๋งˆ์ง€๋ง‰ 000์ž๋ฆฌ ์‚ฌ์šฉ) ์„ธ๊ทธ๋จผํŠธ 000์— ์š”์†Œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฒˆ์งธ ์กฐํšŒ์—๋Š” 6๋ฒˆ์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ง„์งœ ๊ณผ์ œ๋Š” ๋งค์šฐ ์ ์€ ์ˆ˜์˜ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•  ์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค..

๋‚ด ์˜ˆ์—์„œ๋Š” ์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ด๋ฉฐ ํ‚ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ ์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ž์—ด(์˜ˆ: ์„ฑ)
  • 2์ค„(์˜ˆ: ์„ฑ ๋ฐ ์ด๋ฆ„)
  • 2์ค„ ๋ฐ ๋‚ ์งœ(์˜ˆ: ์„ฑ, ์ด๋ฆ„, ์ƒ๋…„์›”์ผ)
  • ...

์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด์‹œ ํ…Œ์ด๋ธ” ์กฐํšŒ ๋น„์šฉ์ด O(1).

๋ฐฐ์—ด๊ณผ ํ•ด์‹œ ํ…Œ์ด๋ธ”

์™œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

ํ , ์ข‹์€ ์งˆ๋ฌธ์ด๋„ค์š”.

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

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๊ธฐ์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ž๋ฐ”ํ•ด์‹œ๋งต, ์ด๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด Java๋ฅผ ์ดํ•ดํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€