CS
๊ทธ๋ํ (Graph) ๋?๊ทธ๋ํ๋ ์ ์ (vertex)๊ณผ ๊ฐ์ (edge)๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐํธ๋ฆฌ (Tree) ์ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋๊ณ ์๊ฐํ ์ ์๋๋ฐ,๊ทธ๋ํ์ ๊ฒฝ์ฐ์๋ ํธ๋ฆฌ์ ๋ค๋ฅด๊ฒ ์ ์ ๋ง๋ค ๊ฐ์ ์ด ์์ ์๋ ์๊ณ ๋ถ๋ชจ ์์๊ฐ๋
์ด ์กด์ฌํ์ง ์๋ ๋ฑ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.์งํ์ฒ ๋
ธ์ ๋ ๋ฑ์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ฑฐ๋ sns์์๋ ๊ณตํต๋ ์น๊ตฌ๋ฅผ ์ฐพ๋ ๋ฑ์ ํ์ฉ๋๋ค.์ฅ๋จ์ ์ฅ์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ ์ ์์ (์์
๋คํธ์ํฌ, ๊ฒฝ๋ก ํ์ ๋ฑ)๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ต๋จ ๊ฒฝ๋ก, ์ฐ๊ฒฐ์ฑ ๋ฑ์ ์ฐพ์ ์ ์์.๋จ์ ๊ตฌํ๊ณผ ์ฐ์ฐ์ด ๋ณต์กํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ํผ.์ํ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์.๊ตฌํ๋ฅผ ์ฌ์ฉํ ๊ตฌํ#include #include class Graph{private: int V; std::vector > adjMatri..
CS
ํธ๋ฆฌ (Tree) ๋?ํธ๋ฆฌ๋ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์๋ฃ๊ตฌ์กฐ๋ก, ๋ถ๋ชจ์ ์์ ๋
ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐํ๊ฐ ์ฉ์ดํด ํ์ผ ์์คํ
, ๊ณ์ธต์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ์ฌ์ฉ ๊ฐ๋ฅ.์ฅ๋จ์ ์ฅ์ ๋ฐ์ดํฐ ๊ฒ์, ์ฝ์
, ์ญ์ ๊ฐ ํจ์จ์ (ํนํ ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ฒฝ์ฐ).๋ฐ์ดํฐ ๊ตฌ์กฐํ๊ฐ ์ฉ์ดํด ํ์ผ ์์คํ
, ๊ณ์ธต์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ์ฌ์ฉ ๊ฐ๋ฅ.๋จ์ ๊ท ํ์ด ๋ง์ง ์์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ.๊ตฌํ์ด ๋ณต์กํ๊ณ ๋
ธ๋ ์ถ๊ฐ ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋ ๋ฐ์ํธ๋ฆฌ (Tree)๋ ๋์ถฉ๋ณด๋ฉด ๋งํฌ๋๋ฆฌ์คํธ (Linked List)๋ ๊ตฌ์กฐ๊ฐ ๋น์ทํ๋ค๊ณ ์๊ฐํ ์๋ ์๋๋ฐ.ํธ๋ฆฌ (Tree)์ ๊ฒฝ์ฐ์๋ ํ๋์ ๋ถ๋ชจ๊ฐ ์ฌ๋ฌ๊ฐ์ ์์์ ๊ฐ์ง๊ณ ์๊ณ , ์ต์์์ ๋
ธ๋์ ๊ฒฝ์ฐ์๋ ๋ถ๋ชจ๊ฐ ๋ฐ๋ก ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.๊ตฌํ#include ์ ํ์ฉํ ๋ค์ค๊ณ์ธต ํธ๋ฆฌ๊ตฌํ#in..
CS
๋งํฌ๋๋ฆฌ์คํธ (Linked list) ๋?์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋
ธ๋์ ์ฃผ์๋ฅผ ํฌํจํ์ฌ ์์ฐจ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์๋ฃ๊ตฌ์กฐ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.๊ธฐ์กด์ ์ผ๋ก๋ ํ์ฌ์ ๋
ธ๋๊ฐ ๋ค์ ๋
ธ๋๋ง์ ์ฐธ์กฐํ๋ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List) ๋ถํฐ ์ด์ ๋
ธ๋์ ๋ค์ ๋
ธ๋ ๋ชจ๋๋ฅผ ์ฐธ์กฐํ๋ ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Doubly Linked List) ๋ฑ์ผ๋ก ๋ค์ํ๊ฒ ํ์ฅ์ด ์ด๋ฃจ์ด์ง ์ ์๋ค.์ฅ๋จ์ ์ฅ์ ๋์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์ฝ์
์ญ์ ์ ์ฉ์ดํ๋ค.๋จ์ ์์์ ์ผ๋ก ํน์ ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋น์ฉ์ด ๋ ๋ค. ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Singly Linked List)์ฅ์ :๊ฐ ๋
ธ๋๊ฐ ๋ค์ ๋
ธ๋๋ง์ ์ฐธ์กฐ๋ next๋ง ๊ฐ์ง๊ณ ์๊ธฐ๋๋ฌธ์ ์๋ฑกํฅ์ ๋นํด ๋ฉ๋ชจ๋ฆฌ์ฌ์ฉ๋์ด ์ค์ด๋ ๋ค..
CS
ํ (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..
CS
์คํ (Stack) ์ด๋?์์๊ฐ ๋ณด์กด๋๋ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์คํ์ LIFO(Last In, First Out) ๊ตฌ์กฐ๋ก, ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ผ๊ธฐํ๋ค.์์ธ ์ ์๋ ํ๋
ธ์ด ํ์ ์์๋ก ์๊ฐํ๋ฉด ๋๋ค.์ฅ๋จ์ ์ฅ์ ๋ฐ์ดํฐ์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ O(1) ์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๊ฐ ๋๋ค.๋จ์ ์ค๊ฐ๊ณผ ๋ง์ง๋ง์ ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ๋นํจ์จ์ ์ด๋ค.๊ตฌํ#include ์ฌ์ฉ#include #include using namespace std;int main(void) { stack s; s.push(1); s.push(2); s.push(3); cout ์ ์ ํ ๋น ๋ฐฉ์์ผ๋ก ๊ตฌํ#ifndef CUSTOMSTACK_HPP#define CUSTOMSTACK_HPP#define MAX_SIZE ..
CS
๋ฐฐ์ด (Array)์ด๋?๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ์ด์ผ๊ธฐํ๋ค.๋์ผํ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํ๋ค.์ฅ๋จ์ ์ฅ์ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ ์์์ O(1) ์๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.๊ตฌํ์ด ๊ฐ๋จํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ํจ์จ์ ์ด๋ค.๋จ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด์๊ธฐ๋๋ฌธ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ์ํด์๋ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ผํ๋ค.์ค๊ฐ์ ์์๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ ๊ฒฝ์ฐ์๋ ํด๋น ์์ ์ด์ธ์ ๋ชจ๋ ์์๋ฅผ ์ด๋ํด์ผํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.๊ตฌํ#include int main(void) { // stack int number[5] = {1, 2, 3, 4, 5}; char s[5] = {'a', 'b', 'c', 'd', 'e'}; // heap int* arr = new int[5]; arr[0] = 1; arr[1] = 2; delete arr..
CS
์๋ฃ๊ตฌ์กฐ๋? ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์กฐ์งํ๊ณ ์ ์ฅํ๋๋์ ๋ฐ๋ผ ๊ฒ์, ์ฝ์
, ์ญ์ ๋ฑ์ ์์
์ด ๋ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์๋ค.์๋ฃ๊ตฌ์กฐ๋ ํน์ ์ํฉ์์ ๋ ํจ์จ์ ์ธ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ, ๊ฐ๋ฐ์๋ ๋ฌธ์ ์ ๋ง๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค. ๊ตฌํ ๋ฐ ์ธ๋ถ๋ด์ฉ 1. Array. [์๋ฃ๊ตฌ์กฐ] ๋ฐฐ์ด (Array)๋ฐฐ์ด์ด๋?๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ์ด์ผ๊ธฐํ๋ค.๋์ผํ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅํ๋ค.์ฅ๋จ์ ์ฅ์ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ ์์์ O(1) ์๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.๊ตฌํ์ด ๊ฐ๋จํ๊ณ jun-13.tistory.com 2. Linked list. [์๋ฃ๊ตฌ์กฐ] ๋งํฌ๋๋ฆฌ์คํธ (Linked list)๋งํฌ๋๋ฆฌ์คํธ (Linked list) ๋?์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋..
CS
ํ๋ ์์ํฌ๋ ๋ฌด์์ด๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ? ํ๋ ์ ์ํฌ ํํ ์ฌ๋๋ค์ด ๋ง์ด ์ด์ผ๊ธฐํ๋ Spring, Django, React ๊ฐ์ด ์ด๋ฏธ ์ ํด์ง ๊ตฌ์กฐ๊ฐ ์์ด์ ๊ทธ ๊ตฌ์กฐ ์์ฒด๋ฅผ ๋ฐ๊ฟ ์๋ ์๊ณ ์ ํด์ง ๊ตฌ์กฐ์ ์์ํ๋ฉฐ ๋ฐ๋ผ๊ฐ๋ ๋ฐฉ์์ ์ด์ผ๊ธฐํ๋ค. ๊ทธ๋์ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ํ์ ๋ฐ๋ผ์ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค๋ณด๋ ํต์ ๊ถ์ด ์ฌ์ฉ์์๊ฒ ์์ง์๊ณ ํ๋ ์ ์ํฌ๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ์ด์ผ๊ธฐ ํ๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋๋ฅผ ์์ฑํด์ ๋ง๋๋ class๊ฐ์ ๊ฒ๋ค์ ์ด์ผ๊ธฐํ๋ค๊ณ ํ๋ค. ์ํฉ์ ๋ฐ๋ผ์ ์ด๋ค ์ํฉ์ ์ด๋ ํ class๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๋ฑ ์ฌ์ฉ์์ ๋ง์๋๋ก ์ข์ง์ฐ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ํต์ ๊ถ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๊ฒ ์์ง์๊ณ ์ฌ์ฉ์๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ์ด์ผ๊ธฐํ๋ค. ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐจ์ด์ “์ ์ดํ๋ฆ์ ๋๊ฐ ๊ฐ์ง๊ณ ์๋๊ฐ”๋ก ..
CS
์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ 5๊ฐ์ง ์์น SOLID SRC: ๋จ์ผ ์ฑ
์ ์์น ํ ํด๋์ค๋ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผํ๋ค. ๋ณ๊ฒฝ์ด ์์ ๋ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ๋จ์ผ ์ฑ
์ ์์น์ ์ ๋ฐ๋ฅธ ๊ฒ ( UI ๋ณ๊ฒฝ, ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ์ ๋ถ๋ฆฌ ๋ฑ ) OCP: ๊ฐ๋ฐฉ-ํ์ ์์น ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผํ๋ค. ๋คํ์ฑ์ ํ์ฉํ๋ฉด ํ์ฅ์๋ ์ด๋ ค์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ์๊ฒ ํ ์ ์๋ค. ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ฐ๋
์ ์ด์ผ๊ธฐํ๋ค. OCP๋ฅผ ์งํค๊ธฐ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๋ณ๋์ ์กฐ๋ฆฝ, ์ค์ ์๊ฐ ํ์ํ๋ค. LSP: ๋ฆฌ์ค์ฝํ ์นํ ์์น ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์
์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผํ๋ค. ํ์ํด๋์ค๋ ์์ ์ธํฐํ์ด์ค์ ๊ท์ฝ์ ๋ค ์ง์ผ์ผํ๋ค. ISP: ์ธ..