๐ ์๊ณ ๋ฆฌ์ฆ

๋ณด์ด์ด-๋ฌด์ด(Boyer-Moore) ์๊ณ ๋ฆฌ์ฆ
1. ๊ฐ๋ ๐ธ ๋ณด์ด์ด-๋ฌด์ด(Boyer-Moore) ์๊ณ ๋ฆฌ์ฆ์ skip์ด๋ผ๋ ๊ฒ์ ํ์ฉํ ๋ฌธ์์ด ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฌ๊ธฐ์ skip์ด๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋ ๋ถํ์ํ ๋น๊ต๊ฐ ์๋ค๋ฉด ๊ฑด๋๋ธ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด๋ค. (์ ํํ ๋ช ์นญ์ ์๋์ง๋ง ์๋์ ๋์๋ฐฉ์์ ๋ณธ๋ค๋ฉด ์ skip์ด๋ผ๊ณ ๋ถ๋ฆฌ๋์ง ์ ์ ์์ ๊ฒ์ด๋ค.) ๋ณด์ด์ด-๋ฌด์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์์ด์ ๋น๊ตํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ถ๋ถ๋ณด๋ค๋ ๋ท๋ถ๋ถ์์ ๋ถ์ผ์น๊ฐ ์ผ์ด๋ ํ๋ฅ ์ด ๋๋ค๋ ์ฑ์ง์ ํ์ฉํ๋ค. ๊ทธ๋์ ๋น๊ตํ ๋ฌธ์์ด๊ณผ ํจํด์ ์๋ถ๋ถ๋ถํฐ ํ์ธํ๋ ๊ฒ์ด ์๋ ๋ท๋ถ๋ถ๋ถํฐ ํ์ธํ๊ฒ ๋๋ค. 2. ๋์๋ฐฉ์ ๐ฌ ๊ธฐ๋ณธ์ ์ธ ๋์๋ฐฉ์์ ์ผ์นํ์ง ์์ ๋ฌธ์๋ฅผ ๋ง๋ ๊ฒฝ์ฐ ํจํด์์ ์ผ์นํ๋ ๋ฌธ์๋ฅผ ์ฐพ์์ ์ด๋ํ ํ ๋น๊ต๋ฅผ ๋ค์ ์์ํ๋ค๋ ๊ฒ์ด๋ค. ๋ณธ๋ฌธ์ 'abphone' ํจํด์ 'phon..

๋ผ๋น-์นดํ(Rabin-Karp) ์๊ณ ๋ฆฌ์ฆ
1. ๊ฐ๋ โฝ ๋ผ๋น-์นดํ(Rabin-Karp) ์๊ณ ๋ฆฌ์ฆ์ด๋ ํด์ฑ(Hashing)์ ์ด์ฉํ ๋ฌธ์์ด ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋น๊ตํ๊ณ ์ ํ๋ ๋ฌธ์๋ค๊ณผ ํจํด์ ๋ฌธ์๋ค์ ์ผ์ผ์ด ๋น๊ตํ๋ ๋์ ์ ๋ฌธ์์ด์ ํด์๊ฐ์ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋๋ค. 2. ๋์๋ฐฉ์(์ฐ์ต์ฉ) ๐ ๋์ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค. ํด์ ํจ์๋ฅผ ์ค์ ํ๋ค. ํด์ ํจ์๋ฅผ ์ด์ฉํ์ฌ ํจํด์ ํด์๊ฐ์ ๊ตฌํ๋ค. ๋น๊ตํ๊ณ ์ ํ๋ ๋ฌธ์์ด์ ํด์๊ฐ์ ๊ตฌํ๋ค. ์ผ์นํ๋ฉด ํจํด๊ณผ ์ฐพ์ ๋ฌธ์์ด์ 1:1 ๋น๊ตํ๋ค. ์ผ์นํ์ง ์์ผ๋ฉด ๋น๊ตํ๊ณ ์ ํ๋ ๋ฌธ์์ด์ ํ ์นธ ๋ค๋ก ์ฎ๊ฒจ์ 3๋ฒ๋ถํฐ ๋ค์ ์์ํ๋ค. ํด์๊ฐ์ด ๊ฐ๋๋ผ๋ 1:1 ๋งค์นญ์ ํตํด์ ์ต์ข ์ ์ผ๋ก ํจํด๊ณผ ๋น๊ตํ๊ณ ์ ํ๋ ๋ฌธ์์ด์ด ์ผ์นํ๋์ง ํ์ธํ๋ ์ ์ฐจ๊ฐ ํ์ํ๋ค. ๊ทธ ์ด์ ๋ ํด์๊ฐ์ด ๊ฐ๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ๊ฐ์ ๋ฌธ์์ด์ด๋ผ๊ณ ๋ณด์ฅํ ..

ํ๋ก์ด๋-์์ฌ(Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ
1. ๊ฐ๋ ๐๐ฆบ ํ๋ก์ด๋-์์ฌ(Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ์ด๋ ๋ชจ๋ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ(Dijkstra) ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅด๊ฒ ์์ ๊ฐ์ค์น๋ฅผ ํ์ฉํ๋ค๋ ๊ฒ ํน์ง์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ์ถ๋ฐ ์ ์ ์ผ๋ก๋ถํฐ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์ต์คํธ๋ผ๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ค๊ณ ํ๋ฉด ์ถ๋ฐ ์ ์ ์ ๋ชจ๋ ์ ์ ์ ๊ฐ์๋งํผ ์ค์ ํด ์ฃผ๋ฉด ๋๋ค. ์์ฐจ ํ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ต์คํธ๋ผ๋ฅผ ๊ตฌํํ๋ฉด O(V^2)์ด๊ณ , ๋ชจ๋ ์ ์ ์ ์ถ๋ฐ ์ ์ ์ผ๋ก ํ๋ค๊ณ ํ๋ฉด O(V * V^2) = O(V^3)์ด ๋๊ฒ ๋๋ค. ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ๋ํ O(V^3)์ผ๋ก ๊ฐ๋ค. ํ์ง๋ง ํ๋ก์ด๋-์์ฌ ์..

์ต์ฅ๊ณตํต๋ถ๋ถ์์ด(Longest Common Subsequence - LCS)
1. ๊ฐ๋ ๐ข ์ต์ฅ๊ณตํต๋ถ๋ถ์์ด(Longest Common Subsequence)์ด๋ ์ฃผ์ด์ง ์์ด์ ๋ถ๋ถ ์์ด์์ ๊ฐ์ฅ ๊ธด ๊ฒ์ ์๋ฏธํ๋ค. ์์ ๊ทธ๋ฆผ์์ ์ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ถ๋ถ ์์ด์ด ์ฐ์์ ์ผ ํ์๋ ์๋ค. 2. ๋์๋ฐฉ์ ๐ฆ ๋์ ๋ฐฉ์์ DP๋ฅผ ์ด์ฉํ๋ค. ๋ฌธ์์ด A์ ๋ฌธ์์ด B๊ฐ ์ฃผ์ด์ก๋ค๊ณ ํ์. ๋ฌธ์์ด A์ ๋ฌธ์์ด B๋ฅผ ํ ๊ธ์์ฉ ๋น๊ตํ๋ค. ๋น๊ตํ๋ ๋ฌธ์๊ฐ ๊ฐ๋ค๋ฉด DP[i][j] = DP[i - 1][j - 1] + 1์ด ๋๋ค. ๋น๊ตํ๋ ๋ฌธ์๊ฐ ๋ค๋ฅด๋ค๋ฉด DP[i][j]๋ DP[i-1][j]์ DP[i][j-1] ์ค์ ํฐ ๊ฐ์ผ๋ก ์ค์ ํ๋ค. 1๋ฒ๊ณผ 2๋ฒ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์ฌ๊ธฐ์ ๋งํ๋ DP[i][j]๋ ๋ฌธ์์ด A๋ i๋ฒ์งธ๊น์ง ๋ฌธ์์ด B๋ j๋ฒ์งธ๊น์ง ๊ณ ๋ คํ์์ ๊ฒฝ์ฐ์ ์ป์ ์ ์๋ ์ต์ฅ๊ณตํต๋ถ๋ถ์์ด์ ๊ธธ์ด์ด๋ค..

์ต์ฅ๊ณตํต๋ฌธ์์ด(Longest Common Substring - LCS)
๋ค์ด๊ฐ๊ธฐ์ ์์ LCS๋ฅผ ๊ตฌ๋ณํ๋๋ก ํ์. ์ผ๋ฐ์ ์ผ๋ก LCS๋ผ๊ณ ํ๋ฉด ์ต์ฅ๊ณตํต๋ถ๋ถ์์ด(Longest Common Subsequence)์ ๋ปํ์ง๋ง, ์ต์ฅ๊ณตํต ๋ฌธ์์ด(Longest Common Sustring)๋ LCS๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ๋์ ์ฐจ์ด์ ์ ๊ตฌํ๊ณ ์ ํ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ์ฐ์์ฑ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ฒ ๊ธ์์๋ ์ต์ฅ๊ณตํต ๋ฌธ์์ด(Longest Common Substring)์ ๋ํด์ ๋จผ์ ์์๋ณด์ 1. ๊ฐ๋ ๐ฆ ์ต์ฅ๊ณตํต๋ถ๋ถ๋ฌธ์์ด(LCS)์ ์ฐ์๋ ๋ถ๋ถ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธด ๋ฌธ์์ด์ ๋งํ๋ค. 2. ๋์ ๋ฐฉ์ ๐ ๋์ ๋ฐฉ์์ DP๋ฅผ ์ด์ฉํ๋ค. ๋ฌธ์์ด A์ ๋ฌธ์์ด B๊ฐ ์ฃผ์ด์ก๋ค๊ณ ํ์. ๋ฌธ์์ด A์ ๋ฌธ์์ด B๋ฅผ ํ ๊ธ์์ฉ ๋น๊ตํ๋ค. ๋น๊ตํ๋ ๋ฌธ์๊ฐ ๊ฐ๋ค๋ฉด DP[i][j]๋ DP[i-1][j-1] ..

์ต์ฅ์ฆ๊ฐ๋ถ๋ถ์์ด(Longest Increasing Subsequence - LIS)
1. ๊ฐ๋ ๐ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(LIS - Longest Increasing Subsequence)์ด๋ ์์์ ์์ด๋ก ๋ง๋ ๋ถ๋ถ ์์ด ์ค ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๊ฐ์ฅ ๊ธด ์์ด์ ์๋ฏธํ๋ค. '3 2 6 4 5 1'์ด ์๋ค๊ณ ํ์. ํด๋น ์์ด์ ๋ถ๋ถ ์์ด์ {3}, {2}, {6},... {3, 2}, {2, 1},... {2, 6, 4}, {2, 4, 5},... {3, 2, 5, 1},... {2, 6, 4, 5, 1},... {3, 2, 6, 4, 5, 1} ๋ฑ์ด ์กด์ฌํ๋ค. ์ฌ๊ธฐ์ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด์ {2, 4, 5}์ด๋ฉฐ ๊ทธ ๊ธธ์ด๋ 3์ด ๋๊ฒ ๋๋ค. ์ด๋ฒ ๊ธ์ ํตํด ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์์๋ณด์. ์์๋ ์๊ฐ๋ณต์ก๋๊ฐ ํฐ ๊ฒ์์๋ถํฐ ์์ ๊ฒ์ผ๋ก ์งํ๋๋ค. 2. ๋ฐฉ๋ฒ 1 ..

๋ค์ต์คํธ๋ผ(Dijkstra) ์๊ณ ๋ฆฌ์ฆ
1. ๊ธฐ๋ณธ ๊ฐ๋ ๐ 1. ์ต๋จ ๊ฒฝ๋ก ๊ฐ์ค์น ๊ทธ๋ํ์์ ๋ ์ ์ ์ฌ์ด์ ๊ฒฝ๋ก๋ค ์ค์์ ๊ฐ์ค์น์ ํฉ์ด ์ต์๊ฐ ๋๋ ๊ฒฝ๋ก 2. ๋ํ์ ์ธ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ ๋ค์ต์คํธ๋ผ(Dijkstra) ๋ฒจ๋งํฌ๋(Bellman-Ford) ํ๋ก์ด๋ ์์ฌ(Floyd-Warshall) ์ ์ ์ถ๋ฐ ์ ์ ๋ก๋ถํฐ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ ์ถ๋ฐ ์ ์ ๋ก๋ถํฐ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ชจ๋ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ ํน์ง ์์ ๊ฐ์ค์น๋ฅผ ํ์ฉ X ์์ ๊ฐ์ค์น๋ฅผ ํ์ฉ O ์์ ๊ฐ์ค์น๋ฅผ ํ์ฉ O ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ DP ์๊ณ ๋ฆฌ์ฆ ์๊ฐ๋ณต์ก๋ O(V ^ 2) ๋๋ O(E log V) O(V ^ 2) ๋๋ O(E log V) O(V ^ 3) 2. ๋ค์ต์คํธ๋ผ(..

PRIM ์๊ณ ๋ฆฌ์ฆ
์ต์์ ์ฅํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ธ PRIM ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ์์๋ณด์. (์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก๋ KRUSKAL ์๊ณ ๋ฆฌ์ฆ์ด ์์๋ค.) 1. PRIM ์๊ณ ๋ฆฌ์ฆ ๐ 1. ๊ธฐ๋ณธ ๊ฐ๋ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ ์ด์ฉํ์ฌ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ์ฐพ๋ ๋ฐฉ์ ์์ ์ ์ ์์๋ถํฐ ์ถ๋ฐํ์ฌ ์ ์ฅํธ๋ฆฌ ์งํฉ์ ๋จ๊ณ์ ์ผ๋ก ๋ง๋ค์ด ๋๊ฐ๋ ๋ฐฉ์ 2. ๋์ ๋ฐฉ์ ๊ทธ๋ํ์์ ํ๋์ ์ ์ ์ ์ ํํ์ฌ ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค. ํธ๋ฆฌ์ ์ฐ๊ฒฐ๋์ด ์์ง๋ง ์์ง ์ ํ๋์ง ์์ ์ ์ ๋ค ์ค์์ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ๊ฐ์ฅ ๋ฎ์ ์ ์ ์ ํธ๋ฆฌ์ ํฌํจ์ํจ๋ค. ํธ๋ฆฌ๊ฐ N-1์ ๊ฐ์ ์ ๊ฐ์ง ๋๊น์ง 2๋ฒ์ ๋ฐ๋ณตํ๋ค. 2. ๊ตฌํ (JAVA) ๐คฟ ๊ตฌํ ๋ฐฉ์์ผ๋ก๋ ์๋์ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ค์ ์ ์ ์ ์ฐพ๋ ๋ฐฉ์ PriorityQueue๋ฅผ ์ด์ฉํด ๋ค์ ์ ์ ์ ์ฐพ๋ ๋ฐฉ์ ์์ ์์๋ฅผ ํต..

KRUSKAL ์๊ณ ๋ฆฌ์ฆ
1. ๊ธฐ๋ณธ ๊ฐ๋ ๐งช 1. ์ ์ฅ ํธ๋ฆฌ (Spanning Tree) n๊ฐ์ ์ ์ ์ ๊ฐ์ง๋ ๊ทธ๋ํ์์ n๊ฐ์ ์ ์ ์ ๋ชจ๋ ์ฐ๊ฒฐํ ์ ์๋ n-1๊ฐ์ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ (๊ฐ์ ์ n-1๊ฐ ์ด์์ผ ์ ์๋ค.) ๋ฌผ๋ก n-1๊ฐ ์ด์์ ๊ฐ์ ์ ๊ฐ์ ธ๋ ์ ์ฅ ํธ๋ฆฌ๊ฐ ๋ ์ ์๋ค. 2. ์ต์ ์ ์ฅ ํธ๋ฆฌ(Minimum Spanning Tree) ๋ฌดํฅ ๊ฐ์ค์น ๊ทธ๋ํ์์ ๊ฐ์ค์น์ ํฉ์ด ๊ฐ์ฅ ์์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ผ๊ณ ํ๋ค. 2. KRUSKAL ์๊ณ ๋ฆฌ์ฆ ๐งซ 1. ๊ธฐ๋ณธ๊ฐ๋ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ ์ด์ฉํ์ฌ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ์ฐพ๋ ๋ฐฉ์ ๊ทธ๋ฆฌ๋ํ ๋ฐฉ์ ์์ฒด๊ฐ ํญ์ ์ต์ ์ ํด๋ต์ ์ ๊ณตํ๋ค๋ ๋ณด์ฅ์ ์์ง๋ง, KRUSKAL ์๊ณ ๋ฆฌ์ฆ์์๋ ์ต์ ์ ํด๋ต์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์ฆ๋ช ๋์ด์๋ค. 2. ๋์ ๋ฐฉ์ ๋ชจ๋ ๊ฐ์ ๋ค์ ๊ฐ์ค์น์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์์ผ๋ก..

์๋ก์ ์งํฉ(Disjoint-sets)
1. ์๋ก์ ์งํฉ์ ๊ฐ๋ ๋ฐ ์ดํด ๐บ 1. ๊ฐ๋ ์๋ก์ ์งํฉ์ด๋ ์๋ก ์ค๋ณต ํฌํจ๋ ์์๊ฐ ์๋ ์งํฉ์ ๋งํ๋ค. ๊ต์งํฉ์ด ์๋(null) ์งํฉ์ด๋ค. 2. ๋ํ์ ์งํฉ์ ์ํ ํ๋์ ํน์ ๋ฉค๋ฒ๋ฅผ ๋ํ์๋ผ๊ณ ํ๋ค. ์ด๋ ์งํฉ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. 3. ์์ ๋น ๋ฅธ ์ดํด๋ฅผ ์ํด ๊ฐ๋จํ ์์๋ฅผ ์ดํด๋ณด์. 5๋ช ์ ํ์(A, B, C, D, E)์ด ์๋ค๊ณ ํ์. {A}, {B}, {C}, {D}, {E} ์๋์ ๊ฐ์ ์น๊ตฌ ๊ด๊ณ๊ฐ ์๋ค๊ณ ํ์. A - B B - C D - E ์น๊ตฌ ๊ด๊ณ๋ฅผ ํตํด์ 2๊ฐ์ ์งํฉ์ ๋ง๋ค ์ ์๋ค. G1 = {A, B, C} G2 = {D, E} ์๋ก ์ค๋ณต ํฌํจ๋ ์์๊ฐ ์์ผ๋ฏ๋ก ์ด๋ ์๋ก์ ์งํฉ์ด๋ค. (ํ ์ฌ๋์ด ๋ถ์ ์ ์ ์จ์ ์์ชฝ ์งํฉ์ ํฌํจ๋ ์ ์์ผ๋ฏ๋ก ๋น์ฐํ ๊ฒฐ๊ณผ์ด๋ค.) 2. ํ..