728x90

๐Ÿ“ Coding Test Study/Algorithm 2

[Algorithm] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ(Segment Tree)

๊ตฌ๊ฐ„ํ•ฉ, ๊ตฌ๊ฐ„์— ๋”ฐ๋ฅธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. * ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ ๋ฐ ํ•„์š”์„ฑS[0] = A[0];for (int i=1; i ๊ตฌ๊ฐ„ํ•ฉ์„ ๋‹จ์ˆœ for ๋ฌธ์„ ์ด์šฉํ•ด์„œ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.0~n ๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•  ๋•Œ O(n) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.0~n ๋ฟ ์•„๋‹ˆ๋ผ 2~5, 100~200 ๋“ฑ m ๊ฐœ์˜ ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•œ๋‹ค๋ฉด O(nm) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งŒ์•ฝ A[x] ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ.A[x] ๊ฐ’์ด ํฌํ•จ๋œ ๋ชจ๋“  S ๋ฐฐ์—ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์„œ ๋‹ค์‹œ ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.0๋ฒˆ ๊ฐ’์ด๋ผ๊ณ  ํ•˜๋ฉด ๋˜ O(nm) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํฐ ์ˆ˜์˜ n, m ์ด ์ฃผ์–ด์ง€๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ํ’€ ์ˆ˜ ์—†๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.* ์„ธ๊ทธ๋จผํŠธ ํŠธ..

DP(Dynamic Programming) ๊ฐœ๋…, ํ’€์ด๋ฒ•

* DP(Dynamic Programming)๋ž€ ?: ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ณ  ์ž‘์€๋ฌธ์ œ๋กœ ํฐ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•. ์ž‘์€๋ฌธ์ œ๊ฐ€ ์ค‘๋ณต๋œ๋‹ค.(vs ๋ถ„ํ• ์ •๋ณต: ๋ถ„ํ• ์ •๋ณต๊ณผ ๋น„์Šทํ•œ๋ฐ ๋ถ„ํ• ์ •๋ณต์€ ์ž‘์€๋ฌธ์ œ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค.)  * DP ์˜ ํŠน์ง•1) Overlapping Subproblem: ๋ถ€๋ถ„๋ฌธ์ œ(์ž‘์€๋ฌธ์ œ)๊ฐ€ ๊ฒน์นœ๋‹ค.2) Optimal Substructure: ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ. ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ž‘์€ ๋ฌธ์ œ์˜ ์ •๋‹ต์—์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •๋‹ต์˜ ์ž‘์€ ๋ฌธ์ œ์˜ ์ •๋‹ต์€ ํ•ญ์ƒ ๊ฐ™๋‹ค.  * DP ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ: ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ !0 1 1 2 3 5 8 13 21 34 55 89 ...F0 = 0F1 = 1...Fn = Fn-1 + Fn-2(n ≥ 2)Fn ์ด๋ผ๋Š” ํฐ๋ฌธ์ œ ๊ฐ’์„ Fn-1 ๊ณผ Fn-2 ์˜ ์ž‘์€ ํ•ฉ์œผ๋กœ..

728x90