ํฌ์ŠคํŠธ

๐ŸŒ“ ์ด์ง„ํƒ์ƒ‰

๐Ÿ’ซ ์ •์˜


์ด์ง„ํƒ์ƒ‰ Binary-Search
์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด, ํŠน์ • ์›์†Œ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ๋“ฌ


๐Ÿ’ซ ์™œ Why


๐Ÿซง ํƒ์ƒ‰ ๋ฌธ์ œ

  • ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์—์„œ ์ด๋ฆ„์ด K๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์˜ ๋ฒˆํ˜ธ ์ฐพ๊ธฐ
    • ์ฒซ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ํ•œ ์žฅ์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ๋„˜๊ธฐ๋ฉด์„œ ์ฐพ๋Š” ๋ฐฉ๋ฒ•
    • ์ฑ… ํ•œ๊ฐ€์šด๋ฐ๋ฅผ ํŽผ์น˜๊ณ  ์ฐพ๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•
      • ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Œ€๋กœ๋ผ๋ฉด ์ค‘๊ฐ„์ฏค์— K๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„์ด ์žˆ์„ ํ…Œ๋‹ˆ๊นŒ
  • ์‚ฌ์ „์—์„œ ๋‹จ์–ด ์ฐพ๊ธฐ
  • ํŽ˜์ด์Šค๋ถ์— ๋กœ๊ทธ์ธํ•˜๊ธฐ (ํŽ˜์ด์Šค๋ถ์ด ๋‚ด ๊ณ„์ •์ด ์‹ค์กดํ•˜๋Š” ๊ณ„์ •์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์•„์ด๋”” ์ฐพ๊ธฐ)

๋‹จ์ˆœ ํƒ์ƒ‰ Single-Search, ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰
ํ•œ ๋ฒˆ ์ถ”์ธกํ•  ๋•Œ๋งˆ๋‹ค ์ถ”์ธกํ•œ ์ˆซ์ž ํ•˜๋‚˜๊ฐ€ ๋‹ต์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๋ฟ
1~100 ์ˆซ์ž์— ๋Œ€ํ•ด, ๋งŒ์•ฝ ๋‹ต์ด 99์ด๋ผ๋ฉด ๋‹ต์— ๋„๋‹ฌํ•˜๊ธฐ ๊นŒ์ง€ 99๋ฒˆ ์ถ”์ธกํ•ด์•ผ ํ•œ๋‹ค

๋” ์ข‹์€ ๋ฐฉ๋ฒ•

100์˜ ์ค‘๊ฐ„ 50๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ
50์ด ๋„ˆ๋ฌด ์ž‘๋‹ค ๋Š” ๋Œ€๋‹ต ํ•˜๋‚˜๋กœ ์ˆซ์ž์˜ ์ ˆ๋ฐ˜์ด ๋‹ต์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค
๋‚จ์€ 51~100 ๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ ์ค‘๊ฐ„์— ์†ํ•˜๋Š” 75๋กœ ์ถ”์ธก
75๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์œผ๋ฏ€๋กœ ์•ž์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ์ˆซ์ž๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฐ ์ˆซ์ž๋“ค์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค

์ด์ง„ ํƒ์ƒ‰์—์„œ๋Š” ๋งค๋ฒˆ ๋‚จ์€ ์ˆซ์ž ์ค‘์˜ ๊ฐ€์šด๋ฐ ์ˆซ์ž๋ฅผ ๋งํ•˜๊ณ  ๋Œ€๋‹ต์— ๋”ฐ๋ผ ๊ทธ๋ณด๋‹ค ํฐ ์ˆซ์ž ํ˜น์€ ์ž‘์€ ์ˆซ์ž๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์—†์•จ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

100๊ฐœ์˜ ์ˆซ์ž ์ตœ๋Œ€ 7๋ฒˆ ๋งŒ์— ์ •๋‹ต์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค
240,000๊ฐœ ๋‹จ์–ด ์ตœ๋Œ€ 18๋‹จ๊ณ„ ์•ˆ์— ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค
๋‹จ์ˆœ ํƒ์ƒ‰์œผ๋กœ๋Š” 240,000๋ฒˆ

n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ์—์„œ ์ด์ง„ ํƒ์ƒ‰์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€ log2n๋ฒˆ ๋งŒ์— ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ˆœ ํƒ์ƒ‰์ด๋ฉด ์ตœ๋Œ€ n๋ฒˆ์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๋ฆฌ์ŠคํŠธ์— ์ˆซ์ž 8๊ฐœ ์žˆ๋‹ค๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ 8๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•ด๋ด์•ผ ํ•œ๋‹ค๋Š” ๋ง

์ด์ง„ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ log n๊ฐœ์˜ ์ˆซ์ž๋งŒ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ์— ์ˆซ์ž๊ฐ€ 8๊ฐœ ์žˆ๋‹ค๋ฉด 23 = 8, ์ฆ‰ log 8 = 3 ์ด๋ฏ€๋กœ 3๋ฒˆ๋งŒ ํ™•์ธํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ์›์†Œ๊ฐ€ 1,024๊ฐœ์ด๋ฉด 210 = 1,024, ์ฆ‰ log 1,024 = 10 ์ด๋ฏ€๋กœ ์ˆซ์ž 10๊ฐœ๋งŒ ํ™•์ธํ•ด๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ซ ๊ตฌํ˜„


์ฒ˜์Œ์—๋Š” ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ํƒ์ƒ‰
์ดํ›„ (low + high) / 2, ์ ˆ๋ฐ˜์”ฉ ๋ฒ”์œ„๋ฅผ ์ค„์—ฌ ๋‚˜๊ฐ€๋Š”
(๋ฌธ์ œ, low + high๊ฐ€ ์ง์ˆ˜๋ฉด ๊ดœ์ฐฎ์€๋ฐ, ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š”? ๊ฒฐ๊ณผ ๊ฐ’ ๋‚ด๋ฆผ)
์žฌ๊ท€ ํ•จ์ˆ˜

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.