ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Algorithm 13

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ - ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• Euclidean Algorithm

์ผ๋ฐ˜์ ์œผ๋กœ A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ A์™€ B๋ฅผ 2๋ถ€ํ„ฐ A์™€ B์ค‘ ๋” ์ž‘์€ ์ˆ˜ ๊นŒ์ง€ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ˆ˜๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ค ๋น„ํšจ์œจ์ ์ด๋ฉฐ, ๋ชจ๋“  ์ˆ˜๋กœ ๋‚˜๋ˆ ์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด ๋œ๋‹ค. ์ด๋•Œ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• (Euclidean Algorithm) : ๋‘ ์ •์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(Greatest Common Divisor)๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ A > B ์ผ ๋•Œ1. A % B = C2. B % C = D3. ์œ„ ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต4. X % Y = 0, Y๊ฐ€ A์™€ B์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋ณด์ž ๋‘ ์ •์ˆ˜ A, B๋ฅผ ์ง์‚ฌ๊ฐํ˜•์˜ ๋‘ ๋ณ€์˜ ๊ธธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ง์‚ฌ๊ฐํ˜•์„ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์™„์ „ํžˆ ์ฑ„์šฐ๋ ค๊ณ  ํ•  ๋•Œ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์žฅ ๊ธด ๋ณ€์˜ ๊ธธ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด์ง„ ํƒ์ƒ‰ Binary Search

์ด์ง„ ํƒ์ƒ‰(Binary Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์š”์†Œ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ(sort)๋œ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ํƒ์ƒ‰. ์„ ํ˜• ํƒ์ƒ‰๋ณด๋‹ค ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ ๊ฐ€๋Šฅ ๊ฐ’ 53์„ ํƒ์ƒ‰ 1. ๋ฐฐ์—ด์˜ ์ค‘์•™ Binary[5] ์™€ ๋น„๊ต, 53 > Binary[5] => Binary[5] ์ด์ „ ๋ฐฐ์—ด ํƒ์ƒ‰ ๋Œ€์ƒ์—์„œ ์ œ์™ธ 2. Binary[6] ~ Binary[10]์˜ ์ค‘์•™ Binary[8] ๊ณผ ๋น„๊ต, 53 Binary[8] ์ดํ›„ ๋ฐฐ์—ด ํƒ์ƒ‰ ๋Œ€์ƒ์—์„œ ์ œ์™ธ 3. Binary[6] ~ Binary[7]์˜ ์ค‘์•™ Binary[6] ๊ณผ ๋น„๊ต, 53 == Binary[6] => ํƒ์ƒ‰ ์„ฑ๊ณต ๋งจ ์•ž์˜ ์ธ๋ฑ์Šค๋ฅผ pl, ๋งจ ๋์˜ ์ธ๋ฑ์Šค๋ฅผ pr, ์ค‘์•™ ์ธ๋ฑ์Šค๋ฅผ pc๋ผ๊ณ  ํ•  ๋•Œ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํ˜• ํƒ์ƒ‰ Linear Search

์„ ํ˜• ํƒ์ƒ‰(Linear Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ or ์ˆœ์ฐจ ํƒ์ƒ‰(Sequential Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์š”์†Œ๊ฐ€ ์ง์„  ๋ชจ์–‘์œผ๋กœ ๋Š˜์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ํ‚ค ๊ฐ’์„ ๊ฐ–๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ๋งจ ์•ž๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰ ์œ„ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด ๊ฐ’ 5๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด Linear[2] ์—์„œ ํƒ์ƒ‰์— ์„ฑ๊ณตํ•˜์ง€๋งŒ ๊ฐ’ 3์„ ํƒ์ƒ‰ํ•˜๋ฉด Linear์— ๊ฐ’ 3์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์— ์‹คํŒจํ•œ๋‹ค. ์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ๋ฐฐ์—ด ํƒ์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด์ด ๋‹ค์Œ 2๊ฐœ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ฑด 1 : ํƒ์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ (ํƒ์ƒ‰ ์„ฑ๊ณต) ์กฐ๊ฑด 2 : ํƒ์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์„ ์ง€๋‚˜๊ฐ„ ๊ฒฝ์šฐ (ํƒ์ƒ‰ ์‹คํŒจ) ๋ฐฐ์—ด์˜ ์š”์†Œ ์ˆ˜๊ฐ€ n๊ฐœ ์ผ ๋•Œ ์กฐ๊ฑด 1,2๋ฅผ ํŒ๋‹จํ•˜๋Š” ํšŸ์ˆ˜๋Š” ํ‰๊ท  n/2ํšŒ ์ด๋‹ค. => O(n) ๋ฉ”์„œ๋“œ seqSea..