๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ CS/Algorithm

[Algorithm/Swift] ์ด์ง„ ํƒ์ƒ‰(Binary Search)

์•ˆ๋…•ํ•˜์„ธ์š” ์ œ์ธ์ž…๋‹ˆ๋‹ค :)

์˜ค๋Š˜์€ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์ด์ง„ ํƒ์ƒ‰(Binary Search)์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ  Swift ์ฝ”๋“œ๋กœ ๊ตฌํ˜„๊นŒ์ง€ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ ํƒ์ƒ‰์˜ ๋ฒ”์œ„๊ฐ€ ์•„์ฃผ ํฐ ์ƒํ™ฉ์—์„œ ์†๋„๋ฅผ ๋‚ด์„œ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ˆ ์ž˜ ์ •๋ฆฌํ•ด๋‘๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”!

์ด์ง„ ํƒ์ƒ‰์ด๋ž€?

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

์ˆœ์ฐจ ํƒ์ƒ‰

์ˆœ์ฐจ ํƒ์ƒ‰์ด๋ž€ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ณดํ†ต ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ ์‹œ๊ฐ„๋งŒ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ํ•ญ์ƒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

๋˜ํ•œ, ์ˆœ์ฐจ ํƒ์ƒ‰์€ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์›์†Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋กœ ํ™•์ธํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋งค์šฐ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ ์ผ ๋•Œ ์ตœ๋Œ€ N๋ฒˆ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์˜ ๋ฒ”์œ„๊ฐ€ ์•„์ฃผ ํฐ ์ƒํ™ฉ์ด๋ผ๋ฉด ๋‹จ์ˆœํžˆ ์•ž์—์„œ ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„์ด ๋งค์šฐ ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋” ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

์ด์ง„ ํƒ์ƒ‰

์ด์ œ ์ˆœ์ฐจ ํƒ์ƒ‰๋ณด๋‹ค ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ธ ์ด์ง„ ํƒ์ƒ‰์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

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

 

์ด์ง„ ํƒ์ƒ‰์€ ๋ฐ˜์œผ๋กœ ์ชผ๊ฐœ๋ฉฐ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ž‘์ , ๋์ , ์ค‘๊ฐ„์  ์ด๋ ‡๊ฒŒ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ 3๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์ค‘๊ฐ„์  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์ด์ง„ ํƒ์ƒ‰์˜ ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ

์ด์ง„ ํƒ์ƒ‰์„ ๊ทธ๋ฆผ์œผ๋กœ ์‰ฝ๊ฒŒ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค. ์ด๋ฏธ ์ •๋ ฌ๋œ 10๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ’์ด 4์ธ ์›์†Œ๋ฅผ ์ฐพ๋Š” ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณผ๊ฒŒ์š”!

์‹œ์ž‘์ , ๋์ , ์ค‘๊ฐ„์ ์„ ์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘์ ์€ 0, ๋์ ์€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์ธ 9๋กœ ์ •ํ•˜๊ณ , ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๊ฐ€ Int ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์ ์€ 4.5์—์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ ค์„œ 4๋กœ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ์ค‘๊ฐ„์ ์˜ ๊ฐ’๊ณผ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ, ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ์ค‘๊ฐ„์ ์˜ ๊ฐ’์ธ 8๋ณด๋‹ค ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ธ 4๊ฐ€ ๋” ์ž‘์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ์ค‘๊ฐ„์  ์ดํ›„์˜ ๊ฐ’๋“ค์€ ํ™•์ธํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฐ’๋“ค์ด ๋˜๊ฒ ์ฃ ? (์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์ ์˜ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’๋“ค์ž„์ด ๋ณด์žฅ๋˜์–ด์žˆ์Œ) ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์‹œ์ž‘์ , ๋์ , ์ค‘๊ฐ„์ ์„ ์„ธํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ๋กœ์šด ๋์ ์€ ์ด์ „ ํƒ์ƒ‰์—์„œ ํ™•์ธํ•œ ๊ฐ’์ธ 8 ๋ฐ”๋กœ ์ด์ „์˜ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘์ ์€ ๊ทธ๋Œ€๋กœ 0์ด ๋˜๊ณ , ์ค‘๊ฐ„์ ์€ ์‹œ์ž‘์ ๊ณผ ๋์ ์˜ ์ค‘์•™๊ฐ’์ธ 1(1.5์—์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฐ ๊ฐ’)์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์ค‘๊ฐ„์ ์˜ ๊ฐ’๊ณผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฐ’์„ ๋น„๊ตํ•ด๋ณด๋ฉด ์ด๋ฒˆ์—๋Š” ์ค‘๊ฐ„์ ์˜ ๊ฐ’์ธ 2๋ณด๋‹ค ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ธ 4๊ฐ€ ๋” ํฐ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ œ ์ค‘๊ฐ„์  ์ด์ „์˜ ๊ฐ’๋“ค์€ ์ œ์™ธํ•ด๋„ ๋˜๋Š” ๊ฐ’๋“ค์ด ๋ฉ๋‹ˆ๋‹ค!

์ด์ „ ํƒ์ƒ‰์—์„œ ์ค‘๊ฐ„์ ์ด์—ˆ๋˜ ์ธ๋ฑ์Šค ๋ฐ”๋กœ ๋’ค์ธ 2๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์ƒˆ๋กœ ์„ธํŒ…ํ•˜๊ณ  ๋์ ์€ 3 ๊ทธ๋Œ€๋กœ ๋‘๊ฒŒ ๋˜๋ฉด ์ค‘๊ฐ„์ ์€ ์‹œ์ž‘์ ๊ณผ ๊ฐ™์€ 2(2.5์—์„œ ์†Œ์ˆ˜์ ์„ ๋ฒ„๋ฆฐ ๊ฐ’)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„์ ์˜ ๊ฐ’๊ณผ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด ์ด๋ฒˆ์—๋Š” ์ผ์น˜ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ํƒ์ƒ‰์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค!

 

์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” 10๊ฐœ์ง€๋งŒ, ์ด์ง„ ํƒ์ƒ‰์„ ์ด์šฉํ•ด ์ด 3๋ฒˆ์˜ ํƒ์ƒ‰์œผ๋กœ ์›์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ ์ˆœ์ฐจ ํƒ์ƒ‰์„ ์ด์šฉํ•ด๋„ 3๋ฒˆ์˜ ํƒ์ƒ‰์œผ๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ํ›จ์”ฌ ๋„“์€ ๋ฒ”์œ„์—์„œ ํƒ์ƒ‰์„ ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์ˆœ์ฐจ ํƒ์ƒ‰๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ํƒ์ƒ‰์€ ํ•œ ๋ฒˆ ํ™•์ธํ•  ๋•Œ๋งˆ๋‹ค ํ™•์ธํ•˜๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜์”ฉ ์ค„์–ด๋“ ๋‹ค๋Š” ์ ์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(logN)์ž…๋‹ˆ๋‹ค.

Swift ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

์œ„์˜ ์˜ˆ์‹œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด์ง„ ํƒ์ƒ‰์€ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ ์„ธํŒ…, ์ค‘๊ฐ„๊ฐ’๊ณผ ๋น„๊ต ๋ผ๋Š” ๊ณผ์ •์ด ๊ณ„์† ๋ฐ˜๋ณต๋˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ท€ํ•จ์ˆ˜, ๋ฐ˜๋ณต๋ฌธ ์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ด…์‹œ๋‹ค!

 

// ์žฌ๊ท€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ
func binarySearch(_ array: [Int], num: Int) -> Int {
    if array.count == 1 { // ๋ฐฐ์—ด ํฌ๊ธฐ 1์ธ ๊ฒฝ์šฐ
        return array[0] == num ? 0 : -1
    }
    // ๋ฐฐ์—ด ํฌ๊ธฐ 1์ด์ƒ์ด๋ผ๋ฉด
    let mid = array.count / 2  // ์ค‘๊ฐ„์ 
    if array[mid] == num { return mid } // ์ฐพ์œผ๋ ค๋Š” ๊ฐ’ ์ฐพ์€ ๊ฒฝ์šฐ ์ค‘๊ฐ„์  ์ธ๋ฑ์Šค ๋ฆฌํ„ด
    // ์ค‘๊ฐ„์  ๊ฐ’์ด ์ฐพ์œผ๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ -> ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ 0~์ค‘๊ฐ„์ -1๊นŒ์ง€
    // ์ค‘๊ฐ„์  ๊ฐ’์ด ์ฐพ์œผ๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ -> ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ค‘๊ฐ„์ +1~๋๊นŒ์ง€๋กœ ๋‹ค์‹œ ์„ค์ •
    let range = array[mid] > num ? (0..<mid) : ((mid + 1)..<array.count)
    
    return binarySearch(Array(array[range]), num: num)
}

 

// ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ
func binarySearch(_ array: [Int], num: Int) -> Int {
    var start = 0 // ์‹œ์ž‘์ 
    var end = (array.count - 1) // ๋์ 
    
    while start <= end {
        let mid = (start + end) / 2 // ์ค‘๊ฐ„์ 
        
        if array[mid] == num { return mid } // ์ฐพ์€ ๊ฒฝ์šฐ ์ค‘๊ฐ„์  ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
        if array[mid] > num { // ์ฐพ์œผ๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ์ค‘๊ฐ„์ ์ด ๋” ํฐ ๊ฒฝ์šฐ -> ์ค‘๊ฐ„์  ์ดํ›„ ๋ฐ์ดํ„ฐ ํ™•์ธ ํ•„์š” x
            end = mid - 1 // ๋์ ์„ ์ค‘๊ฐ„์ -1๋กœ ์˜ฎ๊ธด๋‹ค
        } else { // ์ฐพ์œผ๋ ค๋Š” ๊ฐ’๋ณด๋‹ค ์ค‘๊ฐ„์ ์ด ๋” ์ž‘์€ ๊ฒฝ์šฐ -> ์ค‘๊ฐ„์  ์ด์ „ ๋ฐ์ดํ„ฐ ํ™•์ธ ํ•„์š” x
            start = mid + 1 // ์‹œ์ž‘์ ์„ ์ค‘๊ฐ„์ +1๋กœ ์˜ฎ๊ธด๋‹ค
        }
    }
    return -1
}

 

binarySearch()๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•  ๋ฐฐ์—ด๊ณผ ์ฐพ๊ณ ์žํ•˜๋Š” ๊ฐ’์„ ๋„˜๊ฒจ ๋ฐ›๋Š” ํ•จ์ˆ˜์ด๊ณ , ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ด ๋ฐฐ์—ด ์•ˆ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๋ฆฌํ„ดํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฐ’์ธ -1์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ๊ทธ๋ฆผ์œผ๋กœ ์‚ดํŽด๋ณธ ๊ณผ์ •์„ ๋‹ค์‹œ ๋– ์˜ฌ๋ ค๋ณด๋ฉฐ ์ฃผ์„๊ณผ ํ•จ๊ป˜ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!


[์ฐธ๊ณ  ์ž๋ฃŒ]

 

Swift) ํƒ์ƒ‰ :: ์ด์ง„ ํƒ์ƒ‰(Binary Search) ์ดํ•ดํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” :) ์†Œ๋“ค์ž…๋‹ˆ๋‹ค!!!!!!! ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ๋„, ์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค!!! ๐Ÿ‘€ ์ด์ „์— ๊ณต๋ถ€ํ•œ ์™„์ „ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐฐ์—ด์„ ์ˆœํšŒ

babbab2.tistory.com

<์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ>

 

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ | ๋‚˜๋™๋นˆ - ๊ต๋ณด๋ฌธ๊ณ 

์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ | IT ์ทจ์ค€์ƒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ž…์‚ฌํ•˜๊ณ  ์‹ถ์€ ์นด์นด์˜คใ†์‚ผ์„ฑ์ „์žใ†๋„ค์ด๋ฒ„ใ†๋ผ์ธ! ์ทจ์—…์˜ ์„ฑ๊ณต ์—ด์‡ ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ์— ์žˆ๋‹ค!IT ์ทจ์ค€์ƒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜

product.kyobobook.co.kr