๋ชฉ๋ก์ ์ฒด ๊ธ (1104)
KoreanFoodie's Study

๊ธฐ์ ๋ฉด์ ๊ณผ ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํด ๊ผญ ์์์ผ ํ ๊ธฐ์ด ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จ ๊ฐ๋ ๋ค๊ณผ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฐ ์ฃผ์ ๋ค์ 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..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! ํ ํ๋ฆฟ ํด๋์ค ์ธ์คํด์ค๋ ๊ฐ์ ํ์ ์ผ๊น? ํ ํ๋ฆฟ ํด๋์ค๋ก ๋ง๋ ๋ ํด๋์ค์์ ์ธ์๋ง ๋ฐ๊พผ๋ค๋ฉด, ํด๋น ์ธ์คํด์ค๋ค์ ๊ฐ์ ํ์ ์ผ๊น? ๋ค์ ์ฝ๋๋ฅผ ๋ณด์. #include #include template class Array { T data[N]; public: Array() {} Array(T (&arr)[N]) { for (int i = 0; i < N; ++i) { data[i] = arr[i]; } } T* get_array() { return data; } int size() { return N; } void print_all() { for (int i = 0; i < N; ++i..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! ๊ฐ๋ณ ๊ธธ์ด ํ ํ๋ฆฟ C++ ํ ํ๋ฆฟ์ ์ด์ฉํ๋ฉด ํ์ด์ฌ์ฒ๋ผ ์์์ ๊ฐฏ์์ ์ธ์๋ฅผ ๋ฐ๋ ํจ์๋ฅผ ๊ตฌํํ ์ ์๋ค. #include template void print(T arg) { std::cout
๋ฐ์ผํ๋ก ์์ฝ๋๋์ด๋ค. ์ ๋ช ํ๊ณ ๋ง์๋ ๊ณณ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด์๋ ์ฌ์ ์์ ์ด ๊ฑฐ์ ํ์๊ฐ ๋ ์๋๊ฐ ์ด๋ ธ๋ค. ๋ฌผ๋ก ๋๋ฌด ์ฅ์ฌ๊ฐ ์ ๋์, ๊ตณ์ด ์์ฝ ๋ฐ์ ๋ฐ์ง ์๋ ์์์ ๋ค๋ ๋ถ์ง๊ธฐ์๋ค. ๊ทธ๋ฐ ๊ณณ๋ค์ ์ถ์ด ๊ฒจ์ธ๋ ๋กฑํจ๋ฉ์ ๋ถ์ฌ ์ก์ผ๋ฉฐ ๊ฐ์ด ์จ ์น๊ตฌ๋ ์ฐ์ธ๋ค๊ณผ ํญ๊ท ๋์ด๋ฅผ ํ ์ค๋น๋ฅผ ํด์ผํ๋ค. ์๋ฒ์ง๋ ์์นญ ๋ฏธ์๊ฐ์ด๊ธฐ์ ๋ง์ง์ ์ฐพ์๊ฐ์๋ ํธ์ด๋ค. ํฌ์ฅ๋ ์์ฃผ ํด ์ค์๊ณ . ์์นญ ๋ฏธ์๊ฐ์ธ ์๋ฒ์ง. ํ์ง๋ง ๋ด๊ฐ ์๊ฐํ๊ธฐ์, ์๋ฒ์ง๋ ํผ(ๆทท)์๊ฐ์ ๊ฐ๊น๋ค. ๋ญ๋ ์ง ๋น๋น๊ณ ์์ด ๋์๋๊น. ์ ๋ฌธ ์ฉ์ด๋ก ์ฐ๊น ๋ฌต๋๋ค๊ณ ํ๋๊ฐ? ๋ง์ง์ ์ธ๊ณ๋ ๋ํนํ๋ค. ์๋๋ ๊ณณ์ ์๋๊ณ , ์๋๋ ๊ณณ์ ์๋๋ ๋ฒ. ๋๋ฌด๋๋ ๋น์ฐํ ๋ง์ด์ง๋ง, ์์์ ์ ๊ฒฝ์ฐ ๊ทธ ํธ์ฐจ๊ฐ ์ ๋ฒ ํฌ๋ค. ๋ฐ๋ก ์์ง์ ๋ถ์ด ์์ด๋ ๋ฌธ์ ์ฑ์๋ฅผ ์ด๋ฃจ๋ ์ง๊ณผ, ํ๋ฆฌ๋ง ๋ ๋ฆฌ..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! C++ ํ ํ๋ฆฟ ๋์ ์๋์ ๊ฐ์ ๋ฒกํฐ ํด๋์ค๋ฅผ ๋ง๋ค์๋ค๊ณ ํ์. class Vector { int* data; int capacity; int length; public: Vector(int n) : data(new int[n]), capacity(n), length(0) {} void push_back(int input); void remove(int index); int size() { return length; } void print_data() { for (int i = 0; i < n; ++i) { std::cout
๋ง์์ด ๋ฐ๋ปํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์๋ด๋ฆฌ๋ฉด ์ข์๊น. ๊ทธ๋ฅ, ์จ๊ธฐ๋ฅผ ์ค๊ฐ์ผ๋ก ๋๋ผ๋ฏ ๋ฐ์คํ ๋ง์์ด๋ผ๋ ๋์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์๋ค์ด๋ฉด ์๋๋ ๊ฑธ๊น. ๋ฐ๋ปํ ๋ง์์ด๋ผ๋ ๋ ์์ ์ ์ฒด๋ฅผ ๊ผฌ์ง๊ผฌ์งํ๊ฒ ํ๊ณ ๋ค์ด ๊ฒฐ๋ก ์ ๋ด๋ ค์ผ ์ง์ฑ์ด ํ๋ฆฌ๋ ์ฌํ๋ ์ฌํ ๋์ ์ฑ๊ฒฉ์ด์ฌ. ์ด์ฉ๋ฉด ๋๋ ๋ฐ๋ปํ ๋ง์์ ๊ฐ์ง๊ธฐ์ ์ด๋ฏธ ํ๋ฆฐ ์ด๋ช ์ ํ๊ณ ๋ ๊ฑด ์๋๊น ์ถ๊ธฐ๋ ํ๋ค. ๊ทธ๋ฌ๋ ํ๊ณ ๋ ํ์ ๋ฐ์, ๋ ธ๋ ฅ์ผ๋ก ๊ทน๋ณตํ ์ ์๋ค๊ณ ๋ฏฟ๋ ๋์ด๊ธฐ์ ์์ง ์ผ๋ง์ ํฌ๋ง์ ๋จ์ ์์ง ์์๊น. ์ฌ๋์ ๋ณํ๋ค. ์ด์ ๊ธ์์๋ ๊ทธ ์ฃผ์ ๋ฅผ ๋ค๋ฃฌ ์ ์ด ์๊ณ ์์ผ๋ก๋ ์ฌ๋์ด ๋ณํ๋ค๋ ๋์ ์๊ฐ์ ๋ฐ๋์ง ์์ ๊ฒ์ด๋ค. ์ฌ๋์ ๋์์์ด ๋ณํ๋ค. ๋ฌผ๋ก ๋ณ๋ชจํ๋ ์๊น์๋ ๊ฐ๊ธฐ ๋ค๋ฅด๋ค. ๋ง์น ๋จน๊ตฌ๋ฆ์์ ๋ฐ์ณ๋์จ ๋น๋ฐฉ์ธ์ด ์๋ก ๋ค๋ฅธ ๋ฌด๋ฌ์ ๊ฒฐ์ ์ ์ด๋ฃจ๋ฏ์ด. ๊ทธ๋ ๋ค๋ฉด ๋๋ ์ด๋จ๊น..

๋ชจ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํต์ฌ ๋ด์ฉ์ ๊ฐ์ถ๋ฆฌ๊ณ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์! fstream ํ์ผ ์คํธ๋ฆผํด๋์ค fstream์ ์์๋ฐ์ istream๊ณผ ostream์ ์ ์ถ๋ ฅ ํด๋์ค๋ก ์ฌ์ฉํ์. std::ifstream in("test.txt"); std::string s; if (in.is_open()) { in >> s; std::cout