๐ | Kotlin/๐ค | ์๊ณ ๋ฆฌ์ฆ7 [์๊ณ ๋ฆฌ์ฆ] ๋งค๊ฐ๋ณ์ ํ์(Parametric Search)๊ณผ ์ด๋ถ ํ์(Binary Search) ๋ด๊ฐ ์๋ ์ ๋ฐ์ด๋๋ฆฌ ์์น์ ๋ํด ์ฌ๋ฆฐ ์ ์ด ์๋ค.์ด๋ฒ์ ๋ฌธ์ ํ์ด์์ ๋ฐ์ด๋๋ฆฌ ์์น์ ๋งค๊ฐ๋ณ์ ํ์์ ์ด์ฉํ๋ ๋ฌธ์ ๋ฅผ ํ๊ณ ๋ค์ ๊ฐ๋ ์ ๊ณต๋ถํด๋ณด๋ ค ํ๋ค. ์ด๋ถ ํ์ ๋ณต์ต(Binary Search)์ด๋ถ ํ์์ ๊ฐ๋จํ๊ฒ ๋ณต์ต์ ํด๋ณด์.์๋ gif์ ๋ณด๋ฉด ์ด๋ถ ํ์์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ฐ๋ก ์ดํด๋ฅผ ํ ์ ์์ ๊ฒ์ด๋ค. ์๋๊ฐ ์ผ๋ฐ ๊ฒ์ ๋ฐฉ๋ฒ์ด๊ณ ์๊ฐ ์ด๋ถ ํ์ ๋ฐฉ๋ฒ์ธ๋ฐ,์ผ๋ฐ ํ์๊ณผ๋ ๋ค๋ฅด๊ฒ ์ค๊ฐ ์ง์ ๊ณผ ์์์ , ๋์ง์ ์ ์ ํด์ ์ค๊ฐ๊ฐ์ ์ฐพ์์ผ ํ๋ ๊ฐ๊ณผ ๋น๊ต ํ ๋์์ ๋ฐ๋ผ ๋ฒ์๋ฅผ ์ค์ฌ๊ฐ๋ฉด์ ํ์ํ๋ค.์ด๋ถ ํ์์ ๋ฆฌ์คํธ๊ฐ ์ ๋ ฌ๋์ด์์ด์ผ ํ๋ค๋ ์ ์ด ํน์ง์ด๋ค.์ค๊ฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋์๋ฅผ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ ๋ถํฉํ์ง ์์ ์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฑธ๋ฌ๊ฐ๋ฉด์ ํ์ํ๊ธฐ ๋๋ฌธ์ ํ์ ์๊ฐ์ด ํจ๊ณผ์ ์ผ๋ก ์ค์ด๋ ๋ค. ๋งค๊ฐ ๋ณ์.. 2024. 6. 26. [์๊ณ ๋ฆฌ์ฆ] ๋งค๋ด์ฒ ์๊ณ ๋ฆฌ์ฆ(Manacher) ๊ฐ๋ ๋งค๋ด์ฒ ์๊ณ ๋ฆฌ์ฆ์ด๋?๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง ๋, ํฐ๋ฆฐ๋๋กฌ ๋ถ๋ถ ๋ฌธ์์ด์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ปํ๋ค. ํฐ๋ฆฐ๋๋กฌ ๋ถ๋ถ ๋ฌธ์์ด์ S์ ๋ถ๋ถ ๋ฌธ์์ด ์ค ํฐ๋ฆฐ๋๋กฌ์ธ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค(banana์์ anana๊ฐ ๋ถ๋ถ ๋ฌธ์์ด ํฐ๋ฆฐ๋๋กฌ์ด๋ค).๋ชจ๋ i์ ๋ํด i๋ฒ ๋ฌธ์๊ฐ ์ค์ฌ์ธ ์ต๋ ๊ธธ์ด์ ํฐ๋ฆฐ๋๋กฌ ๋ถ๋ถ๋ฌธ์์ด์ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ.ํฐ๋ฆฐ๋๋กฌ์ ๊ธธ์ด๋ ์ฃผ๋ก ํฐ๋ฆฐ๋๋กฌ์ ๋ฐ์ง๋ฆ์ ํํ๋ก ์ ์ฅ๋๋ค(๋ฐ์ง๋ฆ์ด๋, ํฐ๋ฆฐ๋๋กฌ์ ์ค์ฌ์ผ๋ก๋ถํฐ ๊ฐ์ฅ ๋จผ ๋ฌธ์๊ฐ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํ ๊ฒ์ด๋ค(aba์์ ๋ฐ์ง๋ฆ์ 1์ด ๋๋ค).ํฐ๋ฆฐ๋๋กฌ์ ๊ธธ์ด๊ฐ i๋ผ๋ฉด ๋ฐ์ง๋ฆ์ (i -1) / 2๊ฐ ๋๋ค. ๋งค๋ด์ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด๊ธฐ ์ ์ ํฐ๋ฆฐ๋๋กฌ์ด ์ ํํ ๋ฌด์์ธ์ง ์ง๊ณ ๋์ด๊ฐ์. ํฐ๋ฆฐ๋๋กฌ(ํ๋ฌธ, palindrome)๋ค์ง์ด๋ ๊ฐ์ ๋ฌธ์์ด์ ๋ปํ๋ค.๊ฑฐ๊พธ๋ก ์ฝ์ด๋.. 2024. 6. 24. [์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ(DFS, BFS) ๊ทธ๋ํ ํ์์ด๋?๋ง์ ์์ ๋ฐ์ดํฐ๋ค ์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ํ์์ด๋ผ๊ณ ํ๋๋ฐ,๊ทธ๋ํ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๊ทธ๋ํ ํ์์ด๋ผ ๋ถ๋ฅธ๋ค. ๊ทธ๋ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์๋ DFS, BFS๊ฐ ์๋ค.DFS(Depth-First Search): ๊น์ด ์ฐ์ ํ์BFS(Breadth-First Search): ๋๋น ์ฐ์ ํ์ ๊น์ด ์ฐ์ ํ์(DFS)๊น์ด ์ฐ์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ์ ์์ ๋ฐ์ดํฐ์ ๋ค์ด๊ฐ ํ, ์์์ ์์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์์์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๊ฐ๋ ์์ผ๋ก, ํ ๊ฐ์ง๋ฅผ ๋๊น์ง ํ๊ณ ๋ค์ด๊ฐ์ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ปํ๋ค. ํ ์ค๊ธฐ๋ฅผ ๋๊น์ง ํ๊ณ ๋ ํ, ๋ค์ ์ค๊ธฐ๋ก ์ด๋ํด ๋ค์ ๋๊น์ง ํ๊ณ ๋๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋๋น ์ฐ์ ํ์(BFS)๋๋น ์ฐ์ ํ์์ ์์ ๋ฐ์ดํฐ์์ ์์ ์ ์.. 2024. 6. 22. [์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm) ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋?๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(ํ์๋ฒ)์ด๋ ํ์ฌ ์ํฉ์์ ๊ฐ์ฅ ์ข์ ๊ฒ(์ต์ ์ ์ ํ)์ ๊ณ ๋ฅด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ปํ๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ํ๋ก๊ทธ๋๋ฐ(DP)์ ๊ฐ๋จํ ๋ฌธ์ ํด๊ฒฐ์ ์ฌ์ฉํ๋ฉด ์ง๋์น๊ฒ ๋ง์ ์ผ์ ํ๋ค๋ ๊ฒ์ ์ฐฉ์ํด ๊ณ ์๋์๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฌ ์ํฉ์์ ๊ฐ์ฅ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ์ ํํด ๋๊ฐ๋ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ค.ํ์ง๋ง ์ด ๊ฐ์ฅ ์ข์ ๊ฒฐ๊ณผ๋ ํญ์ ์ต์ข ์ ์ธ ๊ฒฐ๊ณผ ๋์ถ์ ๋ํ ์ต์ ํด๋ฅผ ๋ณด์ฅํด ์ฃผ๋ ๊ฒ์ ์๋๋ค. ์ ๊ทธ๋ฆผ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ต์ ์ ๊ฐ์ผ ๋, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฌ ์ํฉ์์ ๊ฐ์ฅ ์ต์ ์ ๊ฐ์ ๊ตฌํ๊ธฐ ๋๋ฌธ์์ต์ข ์ ์ธ ๋ต์ 23์ด ๋์ค๊ฒ ๋๋ค(์ต์ ์ ๊ฐ: 128). ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ต์ข ์ ์ธ ๊ฒฐ๊ณผ ๋์ถ์ ์ต์ ํด๋ฅผ ๋ณด์ฅํด ์ฃผ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํด์ผ ํ.. 2024. 6. 18. [์๊ณ ๋ฆฌ์ฆ] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming) ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(๋์ ๊ณํ๋ฒ)์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ด๋ค. ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ: ๋ฌธ์ ํด๊ฒฐ์ ์ํด ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ด๋ ์ ๊ทผ ๋ฐฉ์์ ๋ปํ๋ค.์ค๊ณ ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ๋ต๊ณผ ์์น์ ๋ปํ๋ค. DP์ ์ฌ๊ท ํธ์ถ์ ์ฐจ์ด์ DP์ ์ฌ๊ท ํธ์ถ์ ์ฐจ์ด์ ์ ์๊ธฐ ์ ์ ํํฅ์ ์ ๊ทผ๋ฒ๊ณผ ์ํฅ์ ์ ๊ทผ๋ฒ์ด ๋ฌด์์ธ์ง ์์์ผ ํ๋ค.1. ํํฅ์(top-down) ์ ๊ทผ๋ฒ๊ณผ ์ํฅ์(bottom-top) ์ ๊ทผ๋ฒํํฅ์ ์ ๊ทผ ๋ฐฉ์์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฃผ๋ก ์ฌ๊ท ํธ์ถ์ ํ ๋ ์ฌ์ฉ๋๋ค.์ํฅ์ ์ ๊ทผ ๋ฐฉ์์ ์์ ๋ฌธ์ ๋ค๋ถํฐ ์์ํด ์์ ๋ฌธ์ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์ ์ ํฐ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ. 2. ๋ฉ๋ชจ์ด์ ์ด์ (Memo.. 2024. 6. 12. [Kotlin] ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์๊ณ ๋ฆฌ์ฆ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ด๋? 2๊ฐ์ ์์ฐ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ธฐ๋ณธ ๊ณผ์ ์์๋ก 32์ 24์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ฉด, 32๋ 24๋ก ๋๋์ด ๋จ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์, 32๋ฅผ 24๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค. => 8 32๋ 8๋ก ๋๋์ด ๋จ์ด์ง๋ค. ๋ฐ๋ผ์ 32์ 24์ ์ต๋๊ณต์ฝ์๋ 8์ด๋ค. ์์ ์ฝ๋1. ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉ package algorithm import java.io.BufferedReader import java.io.InputStreamReader fun main() { val bf = BufferedReader(InputStreamReader(System.`in`)) val number = bf.readLine().split(" ") val a = number[0].toInt() val .. 2022. 10. 24. [Kotlin] ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ ์ด์ง ํ์์ด๋? ์ ๋ ฌ๋ ๋ฆฌ์คํธ์ ์ค๊ฐ ๊ฐ์ ์ด์ฉํด ๊ฒ์ ๊ฐ์ ์ค์ฌ ๊ฐ๋ฉด์ ์ํ๋ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ ํ์ ๊ณผ์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ์ ์ค๊ฐ๊ฐ์ ์ฐพ๋๋ค. ์ฐพ๋ ์๊ฐ ์ค๊ฐ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก, ์์ผ๋ฉด ์ผ์ชฝ์ผ๋ก ๊ฒ์ ๋ฒ์๋ฅผ ์ขํ๋ค. 1, 2๋ฒ์ ๋ฐ๋ณตํ๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ๊ทธ๋ฅ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ์ฐพ๋ ๊ฒ๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ํ๋ ์ซ์๋ฅผ ์ฐพ์ ์ ์๋ค. ์์ ์ฝ๋ ์ซ์์ ๋ฒ์์ ์ํ๋ ์ซ์๋ฅผ ์ ๋ ฅํ๊ณ ์ด์ง ํ์์ผ๋ก ๊ทธ ์ซ์๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ package algorithm import java.io.BufferedReader import java.io.InputStreamReader fun main() { val bf = BufferedReader(InputStreamReader(System.`in`)) val array.. 2022. 10. 21. ์ด์ 1 ๋ค์ 728x90