[๋ฐฑ์ค€] 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ(Java)
ยท
Algorithm/BaekJoon
Notion์— ์ •๋ฆฌํ•œ ๊ธ€์„ ์˜ฎ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค. 1563๋ฒˆ: ๊ฐœ๊ทผ์ƒ ๋ฐฑ์ค€์ค‘ํ•™๊ต์—์„œ๋Š” ํ•™๊ธฐ๊ฐ€ ๋๋‚  ๋ฌด๋ ต์— ์ถœ๊ฒฐ์‚ฌํ•ญ์„ ๋ณด๊ณ  ๊ฐœ๊ทผ์ƒ์„ ์ค„ ๊ฒƒ์ธ์ง€ ๋ง ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ด ํ•™๊ต๋Š” ์ด์ƒํ•ด์„œ ํ•™์ƒ๋“ค์ด ํ•™๊ต๋ฅผ ๋„ˆ๋ฌด ์ž์ฃผ ๋น ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๊ทผ์ƒ์„ ์ฃผ๋Š” ์กฐ๊ฑด์ด ์กฐ๊ธˆ ๋… www.acmicpc.net ๋ฌธ์ œ ํ’€์ด ์™„์ „ํƒ์ƒ‰์„ ์ด์šฉํ•ด์•ผํ•˜์ง€๋งŒ, ์™„์ „ํƒ์ƒ‰๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ O(3^1000)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์žฌ๊ท€์  ์ ‘๊ทผ(DFS) + dp โ‡’ dp์˜ bottom-up๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์—ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์ ํ™”์‹์„ ์ฐพ๋Š” ๊ฒƒ์ธ๋ฐ, ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ํ•œ ํ•™๊ธฐ๋ฅผ 3์ผ์ด๋ผ๊ณ  ํ•˜์ž. ์ง€๊ฐ(late)๋Š” 2์ผ ์ด์ƒ์ด๋ฉด ์•ˆ๋˜๊ณ , ๊ฒฐ์„(absent)์€ ์—ฐ์† 3์ผ ์ด์ƒ์ด๋ฉด ์•ˆ๋œ๋‹ค. dp[idx][late][absent] 3..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ํˆฌํฌ์ธํ„ฐ(Two Pointer) ์•Œ๊ณ ๋ฆฌ์ฆ˜
ยท
Algorithm/KBro Study
ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•  ๋•Œ, ๋‘ ๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ์›๋ฆฌ 1. ์‹œ์ž‘์ ๊ณผ ๋์ ์ด ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฅดํ‚ค๋„๋ก ํ•œ๋‹ค. 2. ๋ชฉํ‘œ๊ฐ’ ๋ณด๋‹ค ์‹œ์ž‘์  ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋์ ์˜ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์ž‘์œผ๋ฉด ๋์ (end)๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 3. ๋ชฉํ‘œ๊ฐ’ ๋ณด๋‹ค ์‹œ์ž‘์  ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋์ ์˜ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์‹œ์ž‘์ (start)๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. 4. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•  ๋•Œ๊ฐ€์ง€ 2~3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. 2. ์˜ˆ์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž. ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ์ธ ํŠน์ •ํ•œ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ๋ถ€๋ถ„ ์—ฐ์† ์ˆ˜์—ด ์ฐพ๊ธฐ๋กœ ์•Œ์•„๋ณด์ž. ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์—ด์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์—ฐ์†๋˜๋Š” ์ˆ˜์˜ ํ•ฉ์ด 5 ์ผ๋•Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž. ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] LCS(์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด) & LIS(๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด)
ยท
Algorithm/KBro Study
1. LCS๋ž€? Longest Common Subsequence์˜ ์•ฝ์ž์ด๋ฉฐ, ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ๋ถ€๋ถ„ ์ˆœ์„œ๋“ค ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 'ABCBDAB'์™€ 'BDCABA'์˜ LCS๋ฅผ ๊ตฌํ•ด๋ณด๋ฉด ABCBDAB BDCABA => 'BCBA'๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  LCS๋Š” ์ตœ์ ํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ ๊ณ„ํš๋ฒ•(DP)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 1-1. ์ ‘๊ทผ ๋ฐฉ๋ฒ• & ์˜ˆ์‹œ ๋‘ ๋ฌธ์ž์—ด 'GCABCD' ๊ทธ๋ฆฌ๊ณ  'ABDCED'๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, LCS๋ฅผ ๊ตฌํ•˜๋Š” ์ง„ํ–‰๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, {GCA}, {GCAB}, {GCABC}, {GCABCD}์™€ {A}๋ฅผ ๋น„๊ตํ•˜๋ฉด ๊ณตํ†ต ์ˆ˜์—ด์ด 1์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์€ {ABDCED} ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Dynamic Programming(๋™์  ๊ณ„ํš๋ฒ•)
ยท
Algorithm/KBro Study
1. DP๋ž€? DP(Dynamic Programming)์€ ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋‹ค์‹œ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ด๋ฏธ ํ–ˆ๋˜ ์—ฐ์‚ฐ์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฐ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ์žฌ๊ท€ ๋ฐฉ์‹๋„ DP์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ์žฌ๊ท€ ๋ฐฉ์‹์€ ๋™์ผํ•œ ์ž‘์€ ๋ฌธ์ œ๋“ค์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณต๋˜์–ด ๋น„ํšจ์œจ์ ์ธ ๊ณ„์‚ฐ์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Dynamic Programming ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” Top-Down๊ณผ Bottop-Up ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ, ์•„๋ž˜์—์„œ ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. Dynamic Programming ๊ตฌํ˜„ 2-1 Top-Down ๋ฐฉ์‹ Top-Down ๋ฐฉ์‹์ด๋ž€ ์žฌ๊ท€ ํ•จ์ˆ˜๋กœ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ๋ง ๊ทธ๋Œ€๋กœ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford)
ยท
Algorithm/KBro Study
1. ๋ฒจ๋งŒํฌ๋“œ(Bellman-Ford) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ + ์Œ์ˆ˜ ์‚ฌ์ดํด ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ ๋‹ค์ต์ŠคํŠธ๋ผ์™€๋Š” ๋‹ฌ๋ฆฌ ๊ฐ€์ค‘์น˜์— ์Œ์ˆ˜๊ฐ€ ์žˆ์–ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์‹œ๊ฐ„๋ณต์žก๋„: O(NE) (N:๋…ธ๋“œ์˜ ์ˆ˜, E:์—ฃ์ง€์˜ ์ˆ˜) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ • ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ๋…ธ๋“œ 1์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ฉด 1 -> 2 = 1 1 -> 2 ->3 = 2 1-> 2 ->3 ->4 = 4 ๊ฐ€ ๋˜๊ณ  ๋…ธ๋“œ 2๋Š” ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 4 ->2 ๊ฒฝ๋กœ๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ ๊ฒฐ๊ณผ์ ์œผ๋กœ 1 -> 2์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” 1์ด ๋จ ํ•˜์ง€๋งŒ ์‹ค์ œ 1 -> 2์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” -โˆž ์ž„ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒ„์ƒ 2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ์›๋ฆฌ ์‹œ์ž‘ ์ •์ ์„ ์„ ํƒํ•œ๋‹ค. ๋ชจ๋“  ๊ฐ„์„ ๋“ค์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ..