๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(๋์ ๊ณํ๋ฒ)์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ:
๋ฌธ์ ํด๊ฒฐ์ ์ํด ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ด๋ ์ ๊ทผ ๋ฐฉ์์ ๋ปํ๋ค.
์ค๊ณ ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ๋ต๊ณผ ์์น์ ๋ปํ๋ค.
DP์ ์ฌ๊ท ํธ์ถ์ ์ฐจ์ด์
DP์ ์ฌ๊ท ํธ์ถ์ ์ฐจ์ด์ ์ ์๊ธฐ ์ ์ ํํฅ์ ์ ๊ทผ๋ฒ๊ณผ ์ํฅ์ ์ ๊ทผ๋ฒ์ด ๋ฌด์์ธ์ง ์์์ผ ํ๋ค.
1. ํํฅ์(top-down) ์ ๊ทผ๋ฒ๊ณผ ์ํฅ์(bottom-top) ์ ๊ทผ๋ฒ
ํํฅ์ ์ ๊ทผ ๋ฐฉ์์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฃผ๋ก ์ฌ๊ท ํธ์ถ์ ํ ๋ ์ฌ์ฉ๋๋ค.
์ํฅ์ ์ ๊ทผ ๋ฐฉ์์ ์์ ๋ฌธ์ ๋ค๋ถํฐ ์์ํด ์์ ๋ฌธ์ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์ ์ ํฐ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ.
2. ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)
๋ฉ๋ชจ์ด์ ์ด์ ์ ์ค๋ณต๋๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฒ์ธ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ํตํด ์ด์ ์ ๊ณ์ฐ๊ฐ์ ์ ์ฅํ๊ณ ํ์์ ๋ฐ๋ผ ํด๋น ๊ฐ์ ๋ถ๋ฌ์ ์ฌ์ฌ์ฉํ๋ค. ์ด ๋ฐฉ๋ฒ์ ์ค๋ณต ๊ณ์ฐ์ ๋ฐฉ์งํ๊ณ ๊ณ์ฐ ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ค.
๊ฒฐ๋ก
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ ๊ทธ ๋ต์ ์ ์ฅํด ๋๊ณ ์ฌํ์ฉํ๋ค.
๊ทธ๋์ DP๊ฐ ์๋ ๊ธฐ์ตํ๋ฉฐ ํ๊ธฐ๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค.
DP๋ฅผ ์ ์จ์ผ ํ ๊น?
์ฌ์ค DP๋ ์ฌ๊ท ํธ์ถ๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค. ํ์ง๋ง ๋ ๋ฐฉ๋ฒ์ ํฐ ์ฐจ์ด์ ์ ์ด์ ์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌํ์ฉํ๋๋ ๋ชปํ๋๋์ ์ฐจ์ด์ด๋ค.
๋จ์ ์ฌ๊ท๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฌํ์ฉํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํฐ ๋ฌธ์ ๋ฅผ ๊ตฌํ๊ธฐ ์ํ ์์ ๋ฌธ์ ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋์ด์ ๋นํจ์จ์ ์ธ ๊ณ์ฐ์ด ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด ํผ๋ณด๋์น ์์ด์ ๊ตฌํ๊ณ ์ ํ๋ค. ์ฌ๊ท๋ก ์์ฑํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
์ธ์ด: Kotlin
private fun fibonacci(num: Int): Int {
if (num == 2 || num == 1) {
resursive++
return 1
} else return fibonacci(num - 1) + fibonacci(num - 2)
}
num์ 5๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ๋ค.
๊ทธ๋ฌ๋ฉด ์ฒ์์ 5๋ฅผ ๋ฐ์์ 4+3์ ๋ํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ 4๋ฅผ ๋ฐ์์จ ํจ์์์ 3+2๋ฅผ, 3์ ๋ฐ์์จ ํจ์์์ 2+1์ ํ๊ฒ ๋๋๋ฐ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฌ์ฉํ์ง ๋ชปํด ๋๊ฐ์ ๊ฐ์ ๋ค์ ๊ตฌํ๋ ๋ชจ์ต์ด๋ค.
๊ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ 1๋ฒ ๊ตฌํ๋๋ฐ๋ ์ฌ์ฌ์ฉํ์ง ๋ชปํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ชจ์ต์ด๋ค.
num - 1์์ ๊ตฌํ ๊ฐ์ num - 2๋ฅผ ํด ๋ค์ ๊ตฌํ๊ฒ ๋๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๋ง์ฝ num์ด 5๊ฐ ์๋๋ผ 100์ด๋ผ๊ณ ํ๋ฉด ํจ์์ ํธ์ถ ํ์๋ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋๋ค.
ํํธ ์์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํด ๋๊ณ ์ฌ์ฌ์ฉํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์์์ ๊ณ์ฐํ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ ์ฌํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐ๋ณตํ ํ์ ์์ด 5๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ถํ์ํ ๋ฐ์ดํฐ ํธ์ถ ์์ด 3๋ฒ์ ๋ฐ๋ณต๋ง์ผ๋ก 5๋ฒ์งธ ํผ๋ณด๋์น ์์ด ๋ฐ์ดํฐ๋ฅผ ์์๋ผ ์ ์๋ค.
์ธ์ DP๋ฅผ ์จ์ผ ํ ๊น?
DP๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ 2๊ฐ์ง์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
1. ์ค๋ณต๋๋ ๋ถ๋ถ ๋ฌธ์
DP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋๊ณ ์์ ๋ฌธ์ ๊ฐ์ ์ฌํ์ฉํด ํฐ ๋ฌธ์ ์ ๋ต์ ๊ตฌํ๋ค. ๊ทธ๋์ ๋์ผํ ์์ ๋ฌธ์ ๋ค์ด ๋ฐ๋ณตํ์ฌ ๋ํ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
2. ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ
๋ถ๋ถ ๋ฌธ์ ์ ์ต์ ๊ฒฐ๊ณผ ๊ฐ์ ์ฌ์ฉํด ์ ์ฒด ๋ฌธ์ ์ ์ต์ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด A์ B ์ ๊ฑฐ์ฅ์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๊ณ ์ ํ๋ค A, B ์ ๊ฑฐ์ฅ ์ฌ์ด์๋ X ์ ๊ฑฐ์ฅ์ด ์๋ค.
A -> X๋ก์ ์ต๋จ ๊ฒฝ๋ก๊ฐ AX2์ด๊ณ , X -> B์ ์ต๋จ ๊ฒฝ๋ก๊ฐ BX2์ผ ๋, A -> B์ ์ต๋จ ๊ฒฝ๋ก๋ AX2 - BX2์ด๋ค. ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํด์ ์ ๋๋ก ์ต๋จ ๊ฒฝ๋ก๋ ๋ณํ์ง ์๋๋ค.
์์์ ์์๋ก ๋ค์๋ ํผ๋ณด๋์น ์์ด๋ ์ด์ ์ ๊ณ์ฐ ๊ฐ(๋ถ๋ถ ๋ฌธ์ ์ ๊ฒฐ๊ณผ)์ ํตํด ๋ต(์ ์ฒด ๋ฌธ์ ์ ๊ฒฐ๊ณผ)์ ๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ ๋ง์กฑ์ผ๋ก DP๋ก ํ ์ ์๋ค.
DP๋ก ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
DP๋ ํน์ ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ผ ํ๋์ ๋ฐฉ๋ฒ๋ก ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ํ ๋ฌธ์ ํด๊ฒฐ์ ์ฐ์ผ ์ ์๋ค. ๊ทธ๋์ DP๋ฅผ ์ ์ฉํ ์ ์๋ ๋ฌธ์ ์ธ์ง ์์๋ด๋ ๊ฒ๋ถํฐ ์ฝ๋๋ก ๊ตฌํํ๋ ๊ณผ์ ๊น์ง ๋์ด๋๊ฐ ์ฌ์ด ๊ฒ๋ถํฐ ์ด๋ ค์ด ๊ฒ๊น์ง ๋ค์ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก DP๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ด ์กด์ฌํ๋ค.
- DP๋ก ํ ์ ์๋ ๋ฌธ์ ์ธ์ง ํ์ธ(DP ์ฌ์ฉ ์กฐ๊ฑด ํ์ธ)
- ๋ฌธ์ ์ ๋ณ์ ํ์
- ๋ณ์ ๊ฐ์ ๊ด๊ณ์ ๋ง๋ค๊ธฐ
- ๋ฉ๋ชจํ๊ธฐ(๋ณ์์ ๊ฐ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ)
- ๊ธฐ์ ์ํ ํ์ ํ๊ธฐ(๊ฐ์ฅ ์์ ๋ฌธ์ ์ ์ํ ํ์ )
- ๊ตฌํํ๊ธฐ
๊ตฌํ ๋ฐฉ๋ฒ
1. Bottom-up(๋ฐ๋ณต๋ฌธ ์ฌ์ฉ)
์์ ๋ฌธ์ ๋ถํฐ ์ฐจ๋ก๋๋ก ํด๊ฒฐํ์ฌ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด๋ค.
์ด๋ฅผ ์ํด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ๋ถ๋ถ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ์ง๊ด์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฝ๋ค. ๋ํ ๋ชจ๋ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฏ๋ก ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฅํ๋ค.
2. Top-down(์ฌ๊ท ์ฌ์ฉ)
ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ๋ฐฉ์์ด๋ค.
์ด๋ฅผ ์ํด ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํด ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ๊ณ , ์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ์ ์ฅํ๋ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)์ ํ์ฉํ๋ค.
์ฌ๊ท ํธ์ถ์ ๊ตฌํ์ด ๋ ๊ฐ๋จํ ์ ์๋ค. ๋ํ ํ์ํ ๋ถ๋ถ ๋ฌธ์ ๋ง ํด๊ฒฐํ๋ฏ๋ก ๊ณ์ฐ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
ํ์ง๋ง ์ฌ๊ท ํธ์ถ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ์์ ๋ถ๋ถ ํธ์ถ์ ๋ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ ๊ฒฝ์ฐ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฅํ์ง ๋ชปํ๋ค.
DP ๋ฌธ์ ํ์ด๋ณด๊ธฐ
ํ์ด๋ณผ ๋ฌธ์ ๋ ์๊ณ ๋ฆฌ์ฆ ์์ - ํผ๋ณด๋์น ์ 1์ด๋ค.
https://www.acmicpc.net/problem/24416
๋ฌธ์ ์ ์๊ตฌ์ฌํญ
ํผ๋ณด๋์น ์์ด์ ๊ตฌํ๋ ๋ฐ ์ฌ๊ท ํธ์ถ์ด ์๊ณ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์์ ๋, ์ฌ์ง์ 2๊ฐ์ ์ฝ๋์์ ์ฝ๋ 1(2)๋ผ๊ณ ์ฃผ์ ์ณ์ ธ ์๋ ๋ถ๋ถ์ด ๋ช ๋ฒ ์คํ๋๋์ง ํ์ธํด์ ์ถ๋ ฅํ๋ค.
DP๋ก ํ ์ ์๋ ๋ฌธ์ ์ธ์ง ํ์ธํ๋ค.
- DP๋ก ํ ์ ์๋ ๋ฌธ์ ์ธ๊ฐ?
=> ํผ๋ณด๋์น ์์ด์ ๋ํ์ ์ธ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ ๋ง์กฑ์ผ๋ก DP๋ก ํด๊ฒฐ ๊ฐ๋ฅํ๋ค. - ๋ฌธ์ ์ ๋ณ์ ํ์
=> ์ ๋ฌธ์ ์ ๋ณ์๋ n๋ฒ์งธ ํผ๋ณด๋์น ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ n์ด๋ค. - ๋ณ์ ๊ฐ ๊ด๊ณ์ ๋ง๋ค๊ธฐ
=> ํ์์ ๋ฐ์ดํฐ๋ค์ ์ด์ฉํด ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ด๊ณ์์ f(n) = f(n-1) + f(n-2)์ด๋ค. - ๋ฉ๋ชจํ๊ธฐ
=> ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ํผ๋ณด๋์น ์๋ฅผ ๊ตฌํ ๋ list์ ์ด์ ์ ํด๊ฒฐํ ๋ฌธ์ (๊ฐ)๋ฅผ ์ ์ฅํ๊ณ ๊ทธ๊ฒ์ ์ฌ์ฌ์ฉํ๋ค. - ๊ธฐ์ ์ํ ํ์
=> ํผ๋ณด๋์น ์์ ๊ฐ์ฅ ์์ ๋ฌธ์ ์ ์ํ๋ ํผ๋ณด๋์น ์์ 0๋ฒ์งธ, 1๋ฒ์งธ ๋ฐ์ดํฐ์ธ 1, 1์ด๋ค. - ๊ตฌํํ๊ธฐ
=> ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ก ๊ตฌํํ ์ ์๋ค.
(์คํฌ ์ฃผ์) ์ธ์ด: Kotlin
import java.util.Scanner
private var resursive = 0 // ์ฌ๊ท ํจ์ ์นด์ดํธ
private var loop = 0 // ๋ฐ๋ณต๋ฌธ ์นด์ดํธ
fun main() = with(Scanner(System.`in`)) {
val number = nextInt()
fibonacci(number) // ์ฌ๊ท ํธ์ถ
// ๋ฐ๋ณต๋ฌธ
val fibonacciList = mutableListOf(1, 1)
for (i in 3 .. number) {
fibonacciList.add(fibonacciList[i-2] + fibonacciList[i-3])
loop++
}
println("$resursive $loop")
}
private fun fibonacci(num: Int): Int {
if (num == 2 || num == 1) {
resursive++
return 1
} else return fibonacci(num - 1) + fibonacci(num - 2)
}
๋ฐ๋ณต๋ฌธ ์ฝ๋๋ฅผ ๋ณด๋ฉด fibonacciList์ ์์ ๋ฐ์ดํฐ(n-1, n-2 ๋ฒ์งธ ๊ฐ์ ํฉ)๋ฅผ ์ง์ด๋ฃ์ด ๋ฉ๋ชจํ๊ธฐ๋ฅผ ์ ์ค์ํ๋ค.
๊ตฌํ์ ๋ฐ๋ณต๋ฌธ(bottom-up)๊ณผ ์ฌ๊ท(top-down) ๋ฐฉ์ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ค.
์ ๋ฆฌ
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์์ธํ ๊ณต๋ถํ ์ ์๋ ๊ธฐํ์๋ค.
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฒ ๋์์ผ๋ ์ด์ ๋ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์์ ์ตํ๋ ๊ณผ์ ๋ง ๋จ์๋ค.
DP์ ๊ณผ์ ์ ์๊ฒ ๋์๋ค.
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
https://velog.io/@boyeon_jeong/%EB%8F%99%EC%A0%81%EA%B3%84%ED%9A%8D%EB%B2%95Dynamic-Programming
๋์ ๊ณํ๋ฒ(Dynamic Programming)
DP, ์ฆ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(๋๋ ๋์ ๊ณํ๋ฒ)์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ ๋๋ค.๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ๊ณผ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ1\. ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ๋ฌธ์
velog.io
https://hongjw1938.tistory.com/47
์๊ณ ๋ฆฌ์ฆ - Dynamic Programming(๋์ ๊ณํ๋ฒ)
1. ๊ฐ์ DP, ์ฆ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(๋๋ ๋์ ๊ณํ๋ฒ)์ ๊ธฐ๋ณธ์ ์ธ ์์ด๋์ด๋ก ํ๋์ ํฐ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ฌธ์ ๋ก ๋๋์ด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ฌ ๋ค์ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก
hongjw1938.tistory.com
'๐ | Kotlin > ๐ค | ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๋งค๋ด์ฒ ์๊ณ ๋ฆฌ์ฆ(Manacher) ๊ฐ๋ (0) | 2024.06.24 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ(DFS, BFS) (0) | 2024.06.22 |
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm) (0) | 2024.06.18 |
[Kotlin] ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.10.24 |
[Kotlin] ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.10.21 |