๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ๋จ์ ์ (Articulation Edge) ๋จ์ ์ ๊ณผ ๋จ์ ์ ์ ๋น์ทํ ์๋ฆฌ๋ก ๊ตฌํ ์ ์๋ค. DFS ๋ฅผ ํตํด ๋ฐฉ๋ฌธ ๋ ธ๋์ ์์์, ํด๋น ๋ ธ๋๋ฅผ ํฌํจํ ์์ ๋ ธ๋๋ค์์ ๊ฐ์ฅ ๋จผ์ ๋ฐฉ๋ฌธํ ๋ ธ๋์ ์์(์ต์ ๋ฐฉ๋ฌธ ์์)๋ฅผ ์ ์ฅํ๋ค. ๊ทธ ํ, ํด๋น ๋ ธ๋์ ์ต์ ๋ฐฉ๋ฌธ ๊ฐ๋ฅ ์์๊ฐ ์ธ์ ๋ ธ๋์ ๋ฐฉ๋ฌธ ์์๋ณด๋ค ํด ๊ฒฝ์ฐ(์ฆ, DFS ๋ฐฉ์์ผ๋ก ํด๋น ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ๊ณผ์ ์์ ๋ค๋ฅธ ๋ ธ๋์์ ํด๋น ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ) ํด๋น ์ฃ์ง๋ ๋จ์ ์ ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ฝ๋๋ GeeksForG..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. Boggle : Find all possible words in a board of characters ๋ค์๊ณผ ๊ฐ์ ๋ณด๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์๋, Dictionary์์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋จ์ด๋ฅผ ๋ณด๋๋ฅผ ํตํด ๋ง๋ค ์ ์๋์ง ์๋์ง ํ์ธํ๋ ์ฝ๋๋ฅผ ์ง ๋ณด์. ์ธํ๊ณผ ์์ํ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ ์ฝ ์กฐ๊ฑด์, ๋ณด๋์์ ์ํ์ข์ฐ + ๋๊ฐ์ ์ด 8๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์๋ค๋ ๊ฒ๊ณผ, ๋ณด๋ ์์ ๋ฌธ์๋ฅผ ์ค๋ณตํด์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์๋๋ค๋ ๊ฒ์ด๋ค. ํด๋น ํจ์๋ DFS ๋ฐฉ์์ผ๋ก ๊ตฌํํด์ผ ํ๋ค...
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ์์์ ๋ ฌ (Topological Sort) ์์์ ๋ ฌ์ ์ ํฅ ๊ทธ๋ํ (DAG, Directed Acyclic Graph) ์์ ์ ํ๊ด๊ณ๋ฅผ ๊ณ ๋ คํ ์ ๋ ฌ ๋ฐฉ์์ด๋ค. ์ฆ, A -> B ์ ๊ด๊ณ๊ฐ ์๋ค๊ณ ํ์๋, ์์์ ๋ ฌ์ ํ๋ฉด ๋ฐ๋์ A ๊ฐ B ๋ณด๋ค ๋จผ์ ์ถ๋ ฅ๋๋ค. ์์์ ๋ ฌ์ ํ๊ธฐ ์ํด์๋ Incoming Edge ์ ๊ฐ์ด 0 ์ธ ๋ ์๋ค๋ถํฐ ์์๋๋ก ์ถ์ถํ์ฌ ์ถ๋ ฅํ๋ฉด ๋๋ค. ํน์ Vertex ๋ฅผ ์ถ์ถํ๋ฉด ํด๋น Vertex ๊ฐ ๊ฐ๋ฆฌํค๋ Vertex ์ Incoming Edge..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (Kruskal - Minimum Spanning Tree) ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น์ทํ๊ฒ ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค๋ง ์๋ฆฌ๋ ์กฐ๊ธ ๋ค๋ฅด๋ค. ๋จผ์ , ๋ชจ๋ Vertex ๋ค์ ๋ณ๋์ ์งํฉ์ผ๋ก ๋ง๋ ๋ค. ๊ทธ ํ, ๋ชจ๋ ์ฃ์ง๋ค์ ์ฐ์ ์์ ํ์ ๋ฃ๊ณ , ์ต์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง ๋ ์๋ค๋ถํฐ ๊บผ๋ด ๋ Vertex ๋ฅผ ์ด์ด์ค๋ค. ์ด๋, ๊ฐ์ ์งํฉ์ธ ๊ฒฝ์ฐ๋ ์ฐ๊ฒฐํ์ง ์๋๋ค. ์งํฉ์ด ๊ฐ์์ง๋ฅผ ํ๋ณํ๋ ๊ฒ์ Union-Find ๋ฅผ ์ด์ฉํด ๊ฒ์ฌํ๋ค...
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์ ์ฅ ํธ๋ฆฌ) ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ Greedy ํ ๋ฐฉ์์ผ๋ก Vertex ๋ค์ ์ด์ด ์ต์ ์ ์ฅ ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ : ํด๋น ์ ์ ์ ์งํฉ ๋ํด, ์ฐ๊ฒฐ๋ {๊ฐ์ , ์ ์ } ์์ ์ ์ ๊ฐ์ค์น ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์ ํ์ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ค์น๊ฐ ๊ธฐ์กด์ ๊ฐ์ค์น๋ณด๋ค ์์ผ๋ฉด์, ๋์ฐฉ ์ง์ ์ด ๋ฏธ๋ฐฉ๋ฌธ์ธ ๋ ธ๋๋ฅผ ์งํฉ์ ๋ฃ๊ณ , ์ถ๊ฐ๋ ๋ ธ๋์ {๊ฐ์ , ์ ์ } ์๋ค์ ๋ค์ ์ฐ์ ์์ ํ์ ๋ฃ๋๋ค. ํด๋น ์์ ์ ๋ชจ๋ Vertex ๋ฅผ ์ํํ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด ๋๋ค. ์๊ฐ ๋ณต์ก๋๋..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ์ ๋์จ ํ์ธ๋ / ์ฌ์ดํด ์ฐพ๊ธฐ (Union-Find / Cycle Detection) ์ ๋์จ ํ์ธ๋๋, disjoint set ๋ค์ ํฉ์ณ์ ๊ฐ vertex ๋ค์ด ๊ฐ์ ์งํฉ์ธ์ง ์๋์ง ํ๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. parent ๋ฐฐ์ด์ ๊ฐ vertex ์ ์กฐ์(root node) ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , find, union ๋ฑ์ ํจ์๋ฅผ ์ด์ฉํด ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํ์ํ๊ณ ์งํฉ์ ํฉ์น๋ค. find ํจ์๋ฅผ ๊ตฌํํ ๋, ์ฌ๊ท์ ์ผ๋ก ๊ฒฝ๋ก ํ์ ๋์ค ๋ง๋ vertex ๋ค์ด ๋ถ๋ชจ ๋ ธ๋๋ฅผ..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. Floyd-Warshall (ํ๋ก์ด๋ ์์ฌ - ์ต๋จ๊ฑฐ๋ฆฌ ์) ํ๋ก์ด๋ ์์ฌ(Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ด์ง ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๋ค์ ๋ํ ์ต์๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์๋ฆฌ๋ ๋งค์ฐ ๊ฐ๋จํ๋ฐ, ์์์ง์ i, ๋์ฐฉ์ง์ j ์ ๊ฑฐ๋ฆฌ ์์ ์ค๊ฐ ๊ฒฝ์ ์ง k ๋ฅผ ์ง๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ๊ณ์ relaxation ํด์ฃผ๋ฉด ๋๋ค. ๋ฐ๋ผ์ ์๊ฐ ๋ณต์ก๋๋ (O^3) ์ด ๋์ค๊ฒ ๋๋ค. #include #include #define V 4 #define INF1000000 i..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ๋ค์ต์คํธ๋ผ (์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ) ๋ค์ต์คํธ๋ผ๋ ์ฃผ์ด์ง ์์ ์ง์ ์์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์์ ๊ฐ์ค์น ๊ฐ์ ๋ค๋ก ์ด๋ฃจ์ด์ง ๊ทธ๋ํ์ผ ๊ฒฝ์ฐ์ ํ ์ง์ ์์ ํน์ ์ง์ ๊น์ง์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. Naive ํ๊ฒ ๋ชจ๋ ์ ์ ๋ค์ ์ฒดํฌํ๋ฉฐ, ๊ฑฐ๋ฆฌ๊ฐ์ relaxation ํด์ฃผ๋ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(V^2) ๊ฐ ๋์จ๋ค. (dijkstra_slow ํจ์๋ก ๊ตฌํ) Priority_Queue ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๊ฑฐ๋ฆฌ์ ์ ์ ์ Heapify ํด์ค ๊ฒฝ์ฐ, ์๊ฐ ๋ณต์ก๋๋ ..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. DFS (Depth First Search) DFS ๋ ๊น์ด ์ฐ์ ํ์์ผ๋ก, ๊น์ด ์๋ฃ๊ตฌ์กฐ ํ์ ์ฌ์ฉํ๊ฑฐ๋, ์ฌ๊ท์ ์ผ๋ก ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ์งํํ๋ฉฐ ๊ตฌํํ๋ฉด ๋๋ค. ํฌ์ธํธ๋ map ์ ์ด์ฉํ์ฌ adjacency list ์ visited ๋ฅผ ์ฒ๋ฆฌํ ๋ฐฉ์์ด๋ค. ๊ตฌ์ฒด์ ์ธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. #include #include #include #include #include class Graph { std::map g; std::map visited; public: void addE..
๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ GeeksForGeeks ์ Top 10 algorithms in Interview Questions ๊ธ์์ ๋ฐ์ทํ์์ต๋๋ค. ๋ฌธ์ ๋งํฌ๋ ์ ๋ชฉ์ ๋งํฌ๋ก ๊ฑธ์ด๋์์ต๋๋ค. BFS (Breadth First Search) BFS ๋ ๋์ด ์ฐ์ ํ์์ผ๋ก, ํ(Queue) ์๋ฃ๊ตฌ์กฐ ํ์ ์ฌ์ฉํ์ฌ ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ์งํํ๋ค. ๊ตฌ์ฒด์ ์ธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. #include #include #include using namespace std; class Graph { int N; list* g; public: Graph(int n) : N(n) { g = new list[n]; } void addEdge(int..