๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กalgorithm (3)

๐Ÿ–ฅ dev-ruby

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

์ด์ง„ ํƒ์ƒ‰ (์ด๋ถ„ ํƒ์ƒ‰, Binary Search) ์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰์€ ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ณ€์ˆ˜ 3๊ฐœ(start, mid, end)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•œ๋‹ค. ์ฐพ๊ณ ์žํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„(mid) ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์ด์ง„ ํƒ์ƒ‰์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰(Binary Search)์˜ ํƒ์ƒ‰ ๊ณผ์ • ์œ„์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ 8์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋„๋ก ํ•˜์ž. ์šฐ์„  ์ฒซ๋ฒˆ์งธ๋กœ ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„ ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค. mid = 7; ๋‘๋ฒˆ์งธ๋กœ๋Š” ์ค‘๊ฐ„ ๊ฐ’๊ณผ ์ฐพ์œผ๋ ค๋Š” ๊ฐ’์„ ์„œ๋กœ ๋น„๊ตํ•œ๋‹ค. ๋งŒ์•ฝ ์ฐพ์œผ๋ ค๋Š” ๊ฐ’์ด ์ค‘๊ฐ„ ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ค‘์•™ ์š”์†Œ์˜ ์™ผ์ชฝ์—์„œ ์ค‘๊ฐ„ ๊ฐ’์„ ๋‹ค..

algorithm 2022. 1. 26. 13:41
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming, DP) ์ด๋ž€?

๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming)์€ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. dp์˜ ํ•ต์‹ฌ์€ "๋ฉ”๋ชจ์ด์ œ์ด์…˜" ๊ธฐ๋ฒ•์ธ, ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ž‘์€ ๋ฌธ์ œ๋“ค์ด ๊ณ„์† ๋ฐ˜๋ณต๋˜๊ณ , ๊ทธ ์ž‘์€ ๋ฌธ์ œ์˜ ๊ฒฐ๊ด๊ฐ’์€ ํ•ญ์ƒ ๊ฐ™์„ ๋•Œ DP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ์‚ดํŽด๋ณด์ž. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ... ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๊ตฌํ•  ๋•Œ๋Š” ์žฌ๊ท€๋ฅผ ์“ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์ „ ๊ฒฐ๊ณผ์™€ ์ „์ „ ๊ฒฐ๊ณผ์˜ ํ•ฉ์œผ๋กœ ๊ณ„์† ๊ตฌํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค. return f(n) = f(n-1) + f(n-2) ๊ทธ๋Ÿฐ..

algorithm 2021. 12. 21. 16:34
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜

Dijkstra ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹œ์ž‘์ ์œผ๋กœ ๋ถ€ํ„ฐ ๋‚˜๋จธ์ง€ ์ •์ ๊นŒ์ง€ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ 1:N ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‹จ, ๊ฐ€์ค‘์น˜๋Š” ์Œ์ˆ˜(-) ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. ๊ตฌํ˜„๋ฐฉ๋ฒ• ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ๊ฐ์˜ ์ •์ ์— ๋Œ€ํ•ด์„œ ์ •์  s์—์„œ ์ •์  v๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ d[v]์— ์ €์žฅํ•˜๋ฉด์„œ ํƒ์ƒ‰ํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ์ž‘ ์‹œ, d[s] = 0์ด๊ณ , s๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด์„œ๋Š” d[v] = ํ•ด๋‹น๊ฐ€์ค‘์น˜ ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข…๋ฃŒ ์‹œ, d[v]๋Š” s์—์„œ v๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฒŒ ๋œ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Graph[A][B]๋Š” A์—์„œ B๊นŒ์ง€ ๊ฐ€๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ ์ด๋ผ๊ณ  ํ•˜์ž. 1. ์ฃผ์–ด์ง„ N๊ฐœ์˜ ์ •์  ๊ทธ๋ž˜ํ”„์—์„œ NxN 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ ..

algorithm 2021. 11. 25. 03:39