๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

CS

docker-compose์™€ cmake

๋ชฉํ‘œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐproject - client - Dockerfile - CMakeLists.txt - src - ... - server - Dockerfile - CMakeLists.txt - src - ... - common - Dockerfile - CMakeLists.txt - src - ... - CMakeLists.txt - Docker-compose.txt๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—๋Š” ํฌ๊ฒŒ 3๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋‚˜์˜ ๋ชฉํ‘œ๋Š” ์ด์™€ ๊ฐ™๋‹ค.๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฐ CMake๋ฅผ ํ†ตํ•ด ์„œ๋กœ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  docker-compose..

programming language/C++

[c++] CMake

CMake๋ž€?makefile ์˜ ์ง์ ‘์ ์ธ ์ž‘์„ฑ์—์„œ ํ•œ๋ฐœ์ž๊ตญ ๋” ๋‚˜์•„๊ฐ€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ makefile์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ์‹ ์ง์ ‘์ ์ธ ์ปดํŒŒ์ผ ๋ฐฉ์‹>> g++ main.cpp -o main>> ./main  CMake ์‚ฌ์šฉ๋ฒ• Cmake ์„ค์น˜>> brew install cmake>> cmake --version Cmake ํ…Œ์ŠคํŠธ์„ค์น˜ ํ›„์— ๊ฐ„๋‹จํ•˜๊ฒŒ main.cpp ํŒŒ์ผ์„ Cmake๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•ด๋ณด์ž. CMake๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” CmakeLists.txt๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค.CmakeLists.txt์—๋Š” ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด์•„์„œ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.( ex: ์–ด๋–ค ํŒŒ์ผ์„ ๋นŒ๋“œํ•  ๊ฒƒ์ธ์ง€.. , ์‹คํ–‰ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ๋ฌด์—‡์œผ๋กœ ํ• ๊ฒƒ์ธ์ง€.. , ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์€..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํž™ (Heap)

ํž™ (Heap) ๋ž€?ํŠน์ˆ˜ํ•œ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํž™์€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ตœ๋Œ€ ํž™ (Max Heap)๊ณผ ์ตœ์†Œ ํž™(Min Heap) ์ด 2๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.์ตœ๋Œ€ ํž™ (Max Heap)๋ถ€๋ชจ์˜ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹์˜ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ตฌ์กฐํ•œ์ชฝ ๋…ธ๋“œ๋งŒ ๊ณ„์† ์ง„ํ–‰๋˜์„œ๋Š” ์•ˆ๋œ๋‹ค.์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์—๋„ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.๋ถ€๋ชจ์˜ ๊ฐ’๋ณด๋‹ค ์ž์‹์˜ ๊ฐ’์ด ํฌ๋ฉด ์•ˆ๋œ๋‹ค.์ตœ์†Œ ํž™(Min Heap)๋ถ€๋ชจ์˜ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹์˜ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ตฌ์กฐํ•œ์ชฝ ๋…ธ๋“œ๋งŒ ๊ณ„์† ์ง„ํ–‰๋˜์„œ๋Š” ์•ˆ๋œ๋‹ค.์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ํ•˜์œ„ ํŠธ๋ฆฌ์—๋„ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.๋ถ€๋ชจ์˜ ๊ฐ’๋ณด๋‹ค ์ž์‹์˜ ๊ฐ’์ด ์ž‘์œผ๋ฉด ์•ˆ๋œ๋‹ค.์žฅ๋‹จ์ ์žฅ์ ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ณ  ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Œ.์šฐ์„ ์ˆœ์œ„ ํ๋‚˜ ์ž‘์—… ์Šค์ผ€์ค„๋ง์—์„œ ํ™œ์šฉํ•˜๊ธฐ ์ข‹์Œ.๋‹จ์ ์ค‘๊ฐ„ ์š”์†Œ์— ..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table)

ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table) ๋ž€?ํ‚ค-๊ฐ’ ์Œ์„ ๋น ๋ฅด๊ฒŒ ์‚ฝ์ž…, ์กฐํšŒ, ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์žฅ๋‹จ์ ์žฅ์ ํ‰๊ท ์ ์œผ๋กœ O(1)์˜ ์‹œ๊ฐ„์— ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋น ๋ฆ„.ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์œ ๋ฆฌํ•˜๋ฉฐ, ์ค‘๋ณต ๋ฐ์ดํ„ฐ ๋ฐฉ์ง€์— ์œ ์šฉ.๋‹จ์ ์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ.ํ•ด์‹œ ํ•จ์ˆ˜์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.๊ตฌํ˜„vector๋ฅผ ์‚ฌ์šฉํ•œ ๊ตฌํ˜„#include #include #include class HashTable{private: int BUCKET; std::vector > table; public: HashTable(int b) { this->BUCKET = b; table.resize(BUCKET); } ~HashTable() {}; // ์œ ์ผํ•œ ์ธ๋ฑ์Šค..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ผ์ด (Trie)

ํŠธ๋ผ์ด (Trie) ๋ž€?๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ , ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐtree ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ •๋ณด ๊ฒ€์ƒ‰ ๊ฐ™์€ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋œ๋‹ค.์œ„์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋น ๋ฅด๊ฒŒ ๋‹จ์–ด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์— ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฅ๋‹จ์ ์žฅ์ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์— ํšจ์œจ์ ์ด๋ฉฐ, ์ ‘๋‘์‚ฌ ๊ฒ€์ƒ‰์„ O(m) ์‹œ๊ฐ„์— ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ (m์€ ๋ฌธ์ž์—ด ๊ธธ์ด).์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์œ ์šฉ.๋‹จ์ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ.๊ตฌํ˜„class TrieNode๋ฅผ ์‚ฌ์šฉํ•œ ๊ตฌํ˜„#include #include #include class TrieNode{private:public: TrieNode *child[26]; bool wordEnd; TrieNode() { wordEnd = false; for(int i = 0;..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„ (Graph)

๊ทธ๋ž˜ํ”„ (Graph) ๋ž€?๊ทธ๋ž˜ํ”„๋Š” ์ •์ (vertex)๊ณผ ๊ฐ„์„ (edge)๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐํŠธ๋ฆฌ (Tree) ์™€ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋ƒ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,๊ทธ๋ž˜ํ”„์— ๊ฒฝ์šฐ์—๋Š” ํŠธ๋ฆฌ์™€ ๋‹ค๋ฅด๊ฒŒ ์ •์ ๋งˆ๋‹ค ๊ฐ„์„ ์ด ์—†์„ ์ˆ˜๋„ ์žˆ๊ณ  ๋ถ€๋ชจ ์ž์‹๊ฐœ๋…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋“ฑ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ๋“ฑ์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ sns์—์„œ๋Š” ๊ณตํ†ต๋œ ์นœ๊ตฌ๋ฅผ ์ฐพ๋Š” ๋“ฑ์— ํ™œ์šฉ๋œ๋‹ค.์žฅ๋‹จ์ ์žฅ์ ๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ์Œ (์†Œ์…œ ๋„คํŠธ์›Œํฌ, ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋“ฑ)๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ตœ๋‹จ ๊ฒฝ๋กœ, ์—ฐ๊ฒฐ์„ฑ ๋“ฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ.๋‹จ์ ๊ตฌํ˜„๊ณผ ์—ฐ์‚ฐ์ด ๋ณต์žกํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ํผ.์ˆœํ™˜์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ.๊ตฌํ˜„๋ฅผ ์‚ฌ์šฉํ•œ ๊ตฌํ˜„#include #include class Graph{private: int V; std::vector > adjMatri..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ (Tree)

ํŠธ๋ฆฌ (Tree) ๋ž€?ํŠธ๋ฆฌ๋Š” ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ถ€๋ชจ์™€ ์ž์‹ ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™”๊ฐ€ ์šฉ์ดํ•ด ํŒŒ์ผ ์‹œ์Šคํ…œ, ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ์ €์žฅ ๋“ฑ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ.์žฅ๋‹จ์ ์žฅ์ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ํšจ์œจ์  (ํŠนํžˆ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ).๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™”๊ฐ€ ์šฉ์ดํ•ด ํŒŒ์ผ ์‹œ์Šคํ…œ, ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ์ €์žฅ ๋“ฑ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ.๋‹จ์ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์„ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ.๊ตฌํ˜„์ด ๋ณต์žกํ•˜๊ณ  ๋…ธ๋“œ ์ถ”๊ฐ€ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒํŠธ๋ฆฌ (Tree)๋Š” ๋Œ€์ถฉ๋ณด๋ฉด ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (Linked List)๋ž‘ ๊ตฌ์กฐ๊ฐ€ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ• ์ˆ˜๋„ ์žˆ๋Š”๋ฐ.ํŠธ๋ฆฌ (Tree)์— ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ๋ถ€๋ชจ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ตœ์ƒ์œ„์˜ ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ถ€๋ชจ๊ฐ€ ๋”ฐ๋กœ ์—†๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.๊ตฌํ˜„#include  ์„ ํ™œ์šฉํ•œ ๋‹ค์ค‘๊ณ„์ธต ํŠธ๋ฆฌ๊ตฌํ˜„#in..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (Linked list)

๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (Linked list) ๋ž€?์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.๊ธฐ์กด์ ์œผ๋กœ๋Š” ํ˜„์žฌ์˜ ๋…ธ๋“œ๊ฐ€ ๋‹ค์Œ ๋…ธ๋“œ๋งŒ์„ ์ฐธ์กฐํ•˜๋Š” ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Singly Linked List) ๋ถ€ํ„ฐ ์ด์ „ ๋…ธ๋“œ์™€ ๋‹ค์Œ ๋…ธ๋“œ ๋ชจ๋‘๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Doubly Linked List) ๋“ฑ์œผ๋กœ ๋‹ค์–‘ํ•˜๊ฒŒ ํ™•์žฅ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.์žฅ๋‹จ์ ์žฅ์ ๋™์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ์‚ฝ์ž… ์‚ญ์ œ์˜ ์šฉ์ดํ•˜๋‹ค.๋‹จ์ ์ž„์˜์ ์œผ๋กœ ํŠน์ • ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋น„์šฉ์ด ๋“ ๋‹ค. ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Singly Linked List)์žฅ์ :๊ฐ ๋…ธ๋“œ๊ฐ€ ๋‹ค์Œ ๋…ธ๋“œ๋งŒ์„ ์ฐธ์กฐ๋Š” next๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์–‘๋ฑกํ–ฅ์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ ๋‹ค..

CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํ (Queue)

ํ (Queue) ๋ž€?ํ๋Š” FIFO(First In, First Out) ๊ตฌ์กฐ๋กœ, ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์Šคํƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋จผ์ €๋“ค์–ด์˜จ๊ฒƒ์ด ๋จผ์ €๋‚˜๊ฐ€๋Š” FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.์žฅ๋‹จ์ ์žฅ์ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ O(1) ์‹œ๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.๋‹จ์ ์ค‘๊ฐ„๊ณผ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ด๋‹ค.๊ตฌํ˜„#include ์‚ฌ์šฉ#include #include using namespace std;int main(void) { queue q; q.push(1); q.push(2); q.push(3); cout  deque๋ฅผ ํ™œ์šฉํ•œ ๊ตฌํ˜„#ifndef CUSTOMQUEUE_HPP_#define CUSTOMQUEUE_HPP_#include #include template class Cu..

moaoh
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)