ํƒ์ƒ‰ (Search)

์ถœ์ œ๋นˆ๋„: ์ค‘
๋นˆ์ถœํƒœ๊ทธ: ํƒ์ƒ‰์˜ ์ข…๋ฅ˜, ์‹œ๊ฐ„ ๋ณต์žก๋„

ํƒ์ƒ‰์˜ ์ •์˜

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ์ž‘์—…
  • ๋‚ด๋ถ€ ํƒ์ƒ‰๊ณผ ์™ธ๋ถ€ ํƒ์ƒ‰์œผ๋กœ ๊ตฌ๋ถ„
    • ๋‚ด๋ถ€ ํƒ์ƒ‰: ์ฃผ๊ธฐ์–ต์žฅ์น˜ ์‚ฌ์šฉ, ์ ์€ ์–‘์„ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰
    • ์™ธ๋ถ€ ํƒ์ƒ‰: ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ ํ•จ๊ป˜ ์‚ฌ์šฉ, ๋งŽ์€ ์–‘์„ ๋А๋ฆฌ๊ฒŒ ํƒ์ƒ‰

ํƒ์ƒ‰์˜ ์œ ํ˜• โญ

  1. ์„ ํ˜• ํƒ์ƒ‰: ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ต
  2. ์ด๋ถ„ ํƒ์ƒ‰: ์ ˆ๋ฐ˜์”ฉ ๋‚˜๋ˆ ๊ฐ€๋ฉฐ ํƒ์ƒ‰
  3. ๋ณด๊ฐ„ ํƒ์ƒ‰: ์ฐพ์„ ๊ฐ’์˜ ์œ„์น˜๊ฐ’์„ ์˜ˆ์ƒํ•ด์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ์‚ฌ์ „์‹ ํƒ์ƒ‰
  4. ๋ธ”๋ก ํƒ์ƒ‰: ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน๋ณ„๋กœ ๋ธ”๋กํ™”, ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ํƒ์ƒ‰
  5. ์ด์ง„ ํŠธ๋ฆฌ ํƒ์ƒ‰: ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ง„ ํŠธ๋ฆฌ๋กœ ๋ณ€ํ˜•ํ•œ ๋’ค ํƒ์ƒ‰
  6. ํ•ด์‹ฑ ํƒ์ƒ‰: ํ•ด์‹ฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰

๋ณต์žก๋„

๊ณต๊ฐ„ ๋ณต์žก๋„

  • ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ’ˆ์งˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋น„์ค‘์ด ๋‚ฎ์Œ
  • ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๊ณผ ๊ด€๋ จ๋จ

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

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

๋น… ์˜ค(O) ํ‘œ๊ธฐ๋ฒ•

  • O(1): ์ผ์ •ํ•œ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๋ฅผ ๊ฐ€์ง. ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜์™€ ์ƒ๊ด€์—†์ด ๊ณ ์ •๋œ ํšŸ์ˆ˜๋กœ ์‹คํ–‰
  • O(logN): ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ํญ์ด ์ ์  ์ค„์–ด๋“ฆ. ์ด๋ถ„ํƒ์ƒ‰, ์ด์ง„ ํŠธ๋ฆฌ ํƒ์ƒ‰์— ์ด์šฉ
  • O(N): ์—ฐ์‚ฐํšŸ์ˆ˜๊ฐ€ ์ผ์ •ํ•˜๊ฒŒ ์ฆ๊ฐ€(๋น„๋ก€). ์ˆ˜์—ด ๊ณ„์‚ฐ์ด๋‚˜ ์ˆœ์ฐจ ํƒ์ƒ‰์— ํ™œ์šฉ
  • O(NlogN): ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š”๊ฒŒ ์ ์  ์ปค์ง. ํ€ต ์ •๋ ฌ, ํž™ ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ์— ์‚ฌ์šฉ
  • O(Nยฒ): ๋ฐ์ดํ„ฐ ์ˆ˜์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ œ๊ณฑ๋งŒํผ ํ•„์š”. ๋ฒ„๋ธ” ์ •๋ ฌ, ์„ ํƒ ์ •๋ ฌ์— ์‚ฌ์šฉ
  • O(2^N): ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ์ง€์ˆ˜์Šน๋งŒํผ ํ•„์š”. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ๋“ฑ์˜ ์žฌ๊ท€ํ˜ธ์ถœ
  • O(N!): ๊ฐ€์žฅ ๋А๋ฆฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜. ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ˆ˜์˜ ํŒฉํ† ๋ฆฌ์–ผ

์ฃผ์š” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์„ ํ˜• ํƒ์ƒ‰

  • ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ต
  • ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋‚˜ ์ •๋ ฌ ์—ฌ๋ถ€๋ฅผ ์•Œ์ง€ ๋ชปํ•ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋‹จ์ˆœ๋น„๊ต, ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ์ ์„ ๋•Œ ํ™œ์šฉ
  • ์‹œ๊ฐ„๋ณต์žก๋„: O(N)
  • ๋น„๊ต ํšŸ์ˆ˜ ํ‰๊ท : (N+1)/2
  • ์˜ˆ์‹œ: 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘ 22๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ
    • 22๊ฐ€ 1๋ฒˆ์งธ์ผ ๋•Œ: 1ํšŒ ๋น„๊ต
    • 22๊ฐ€ 3๋ฒˆ์งธ์ผ ๋•Œ: 3ํšŒ ๋น„๊ต
    • 22๊ฐ€ N๋ฒˆ์งธ์ผ ๋•Œ: NํšŒ ๋น„๊ต

์ด๋ถ„(Binary) ํƒ์ƒ‰

  • ๋‚˜๋ˆ ์ง„ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน ์ค‘ ๋Œ€์†Œ ๋น„๊ต๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ”
  • ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ํŒŒ์•…, ๋ฐ์ดํ„ฐ ์ •๋ ฌ ํ•„์š”
  • ์ค‘๊ฐ„์œผ๋กœ ์ž˜๋ผ์„œ ์ค‘๊ฐ„๊ฐ’๊ณผ์˜ ๋Œ€์†Œ ๋น„๊ต๋กœ ํƒ์ƒ‰
  • ์‹œ์ž‘, ์ค‘๊ฐ„, ๋๊ฐ’ ์‚ฌ์šฉ
  • ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋ ์œ„์น˜๋ณด๋‹ค ์ปค์ง€๋ฉด ํƒ์ƒ‰ ์ข…๋ฃŒ

ํ•ด์‹œ(Hash) ํƒ์ƒ‰

  • ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
  • ์‹œ๊ฐ„๋ณต์žก๋„: O(1)
  • ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ €์žฅ ์œ„์น˜๊ฐ€ ์ถฉ๋Œํ•  ๊ฒฝ์šฐ ์กฐ์น˜ ํ•„์š”

์ฃผ์š” ์šฉ์–ด

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

alt text

ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ข…๋ฅ˜ โญ

  1. ์ œ์‚ฐ๋ฒ•(Division): ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ’์„ ์ด์šฉํ•ด ์ €์žฅ์œ„์น˜ ๊ฒฐ์ •
  2. ํด๋”ฉ๋ฒ•(Folding): ๋ถ€๋ถ„๋ณ„ ์ˆซ์ž์˜ ํ•ฉ์—ฐ์‚ฐ, XOR ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ์ €์žฅ ์œ„์น˜ ๊ฒฐ์ •
  3. ์ œ๊ณฑ๋ฒ•(Square): ์ œ๊ณฑํ•œ ๊ฒฐ๊ณผ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ์ €์žฅ ์œ„์น˜ ๊ฒฐ์ •
  4. ์ˆซ์ž ๋ถ„์„๋ฒ•(Digit Analysis): ์ˆซ์ž ๋ถ„ํฌ๊ฐ€ ๊ณ ๋ฅธ ๋ถ€๋ถ„์„ ๋ถ„์„ํ•˜์—ฌ ์ €์žฅ์œ„์น˜ ๊ฒฐ์ •
  5. ๊ธฐ์ˆ˜ ๋ณ€ํ™˜๋ฒ•(Radix Conversion): ํ‚ค๊ฐ’์„ ๋‹ค๋ฅธ ์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ ์œ„์น˜ ๊ฒฐ์ •
  6. ๋ฌด์ž‘์œ„๋ฒ•(Random): ๋‚œ์ˆ˜๋ฅผ ์ด์šฉ

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

  • ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
  • ๋ณต์žกํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ