์๊ณ ๋ฆฌ์ฆ/์๋ฃ๊ตฌ์กฐ10 [Java] Graph (Adjacency Matrix, Adjacency List) ์ ์ (Vertex)๊ณผ ๊ฐ์ (Edge)๋ก ๊ตฌ์ฑ๋ ๊ฒ, Graph(G) = (Vertex(V), Edge(E)) Graph ์ฉ์ด ์ ์ (Vertex) - ๋ ธ๋, ํน์ ํ ์ ์๋ ์ค์ฒด๊ฐ์ (Edge) - ์ ์ ๊ฐ ์ด์ด์ ธ ์๋ ์ ๊ฐ์ค์น(Weight) - ์ ์ ๊ฐ์ ๊ฑฐ๋ฆฌ, ๋น์ฉ (๊ฐ์ ์ ๊ธธ์ด๋ผ๊ณ ์๊ฐํด๋ ์ข์)๊ฒฝ๋ก(Path) - ์ถ๋ฐ ์ ์ ์์ ๋์ฐฉ ์ ์ ๊น์ง์ ๊ฑฐ์ณ ๊ฐ ์์์ํ(Cycle) - ๊ฒฝ๋ก์ ์ถ๋ฐ ์ ์ ๊ณผ ๋์ฐฉ ์ ์ ์ด ๊ฐ์ ๊ฒฝ์ฐ์ฐจ์(Degree) - ์ ์ ์ ๋ถ์ ๊ฐ์ ์์ง์ ์ฐจ์(In-Degree) - ์ ์ ์ผ๋ก ๋ค์ด์ค๋ ๊ฐ์ ์์ง์ถ ์ฐจ์(Out-Degree) - ์ ์ ์์ ๋๊ฐ๋ ๊ฐ์ ์Graph ์ข ๋ฅ ์ ํฅ ๊ทธ๋ํ(Directed Graph) - ํน์ ์ ์ ์์ ํน์ ์ ์ ์ผ๋ก ์ด๋ํ๋ ๊ทธ๋ํ๋ฌดํฅ ๊ทธ๋ํ(UnDire.. 2024. 7. 9. [Java] Binary Tree Binary Tree๋ ํธ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋น์ ํ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.์์ ํฌ์คํ ์์ BST(Binary Search Tree)์ ๋ํด์ ์ค๋ช ํ๋๋ฐ BST๋ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ Binary Tree๋ฅผ ์ฌ์ฉํ ๊น?Tree Post์์๋ ์ค๋ช ํ๋๋ฐ ์ผ๋ฐ DAG์ ๊ฐ์ Tree๋ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋๋ฌด ๋ถ์กฑํ๋ค. ๊ทธ์ Graph์ ๋ค๋ฆ์ด ์๋ค.๊ทธ๋์ ์ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด Binary Tree๋ก ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ๋ฐฉ๋ฒ์ ์ฑํํ ๊ฒ์ด๋ค. ํฌ๊ฒ Binary Tree์ ๋ ์ข ๋ฅ๋ฅผ ์์๋ณด์. 1. ์์ ์ด์ง ํธ๋ฆฌ2. ํธํฅ ํธ๋ฆฌ ์ด ์ธ์๋ ๋ง์ง๋ง Binary Tree์ ํต์ฌ์ ์ค๋ช ํ๊ธฐ์ ๋ ๊ฐ์ง๊ฐ ์ต๊ณ ์ธ ๊ฒ ๊ฐ๋ค. ์ ๋๊ฐ์ง ๊ฐ๋ ์ ์ธ๊ธํ ์ด์ ๋ BST์ ๋ฌธ์ ์ ๋๋ฌธ์ด๋ค.์์ ์์ฑํ B.. 2024. 7. 8. [Java] Binary Search Tree ์ ํฌ์คํ ์์ ์์ฑํ Tree์ ๋นํจ์จ์ ์ธ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์๊ธด ์ด์ง ํ์ ํธ๋ฆฌ๋ค.ํธ๋ฆฌ๋ ์ฌ๋ฌ ์์์ ๊ฐ์ง ์ ์์ง๋ง ์ด์ง ๊ฒ์ ํธ๋ฆฌ์์๋ Binary Tree์ ๊ฐ๋ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์์์์ด Left, Right๋ง ์กด์ฌํ๋ค. ์ด๋ฅผ ํตํด Log_2 (N) ๋ฒ๋ง์ ๋ชจ๋ ์ํ์ ๋๋ผ ์ ์๋ค. ๋, inorder๋ฅผ ์ํ ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. package com.study.datastructrue.nonlinear.binarysearchtree;public class Node { int value; Node left; Node right; public Node(int value) { this.value = value; left = null;.. 2024. 7. 8. [Java] Tree ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ : Tree, Binary Tree, Binary Serach Tree, Balanced Binary Serach Tree, Heap, Trie์ด๋ฒ ํฌ์คํธ์์๋ ๊ธฐ๋ณธ์ ์ธ Tree์ ๋ํด์๋ง ์์ฑํด๋ณด์. Tree๋ ? Node์ Edge๋ก ๊ตฌ์ฑ๋ ๋ฐฉํฅ์ด ์กด์ฌํ๋ ๋น์ํ Graph์ ํ ์ข ๋ฅ์ด๋ค. ๊ทธ๋์ DAG(Directed Acyclic Graphs)๋ผ๊ณ ๋ ํ๋ค.๊ทธ๋ผ Graph๋ก ๋ถ๋ฅํ๋ฉด ๋์ง ์ Tree๋๋ ์์ฌ์ ํ๊ฒ ๋๋ค.Tree๋ Graph์์ ๋ช๊ฐ์ง ํน์ฑ์ ๋ ๊ฐ์ง๋ค. 1. ๋ฃจํธ ๋ ธ๋๊ฐ ํ๋ ์กด์ฌํ๋ค.2. ๋ถ๋ชจ ๋ ธ๋๋ ํ๋๋ฐ์ ์กด์ฌํ์ง ์๋๋ค.3. ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์์ ๊ฐ์ง๊ณ ์๋ค.4. ์์์ด 0๊ฐ์ธ ๊ฒฝ์ฐ ๋จ๋ง๋ ธ๋(Leaf Node)๋ผ๊ณ ํ๋ค.5.. ์ ํน์ฑ์ ์งํค๋ .. 2024. 7. 7. 6. STL ์ฌ์ฉํ๊ธฐ - std::list STL ์ด๋? C++ ์์ ์ ๊ณตํ๋ STandard Library๋ฅผ STL์ด๋ผ๊ณ ํ๋ค. ์๋ฐ์์๋ ์๋ฐ์์ ์ ๊ณตํ๋ API๋ผ๊ณ ๋ณผ ์ ์๋ค. ์ง๊ธ๊น์ง list์ ๋ํด ์ง์ ์ค๊ณํด๋ณด์๊ณ list์ ๋ํ ์ค๋ช ์ด ์ถฉ๋ถํ๋ค. ์ด๋ฒ์๋ STL์ ์ง์ ์ฌ์ฉํ๋ฉด์ ์ด๋ค ๊ธฐ๋ฅ์ด ์๊ณ ์ธ์ , ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์๊ฐํด๋ณด๋๋ก ํ์. โป ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ Method๋ ์ ์ธํ๋ค. (ํจ์จ์ ์ฌ์ฉ) std::list Construct Method Description (constuctor) ๋ฆฌ์คํธ ์์ฑ์ ์ ๋ ฅ ๊ฐ operator= = ๊ธฐํธ์ ๋ํ ์ฐ์ฐ ๋ฐฉ๋ฒ Iterators Method Description begin() ๋ฆฌ์คํธ Head์ ์ํ ๋ฐ์ดํฐ ์์น end() ๋ฆฌ์คํธ ๋ง์ง๋ง ์์น != Tail, null ๊ฐ rbegin.. 2024. 2. 11. 5. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Circular Linked List) ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋? ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๋์ด ์ฒ์๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ํํ๋ฅผ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ผ๊ณ ํฉ๋๋ค. STL์๋ ๊ตฌํ๋์ด์์ง ์๊ณ ์์ง ํ์ ์์ค์ด์ง๋ง, ์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ ๋ณธ ์ ์ด ๋ง์ด ์์ต๋๋ค. ๊ทธ๋์ ๋จ์ํ๊ฒ๋ง ๋ง๋ค์ด๋ณด๋๋ก ํ ๊ฒ์ธ๋ฐ, ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ก ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. (์ค์ ๋ก ์ํ์ ์ธ ์์๋ ํ ๋๋ ์ฌ๊ท๋ฅผ ๋ง์ด ์ฌ์ฉํ๋๋ฏ) ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Circular Linked List) ๊ตฌํํ๊ธฐ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ง๋ ์๊ฒ ์ต๋๋ค. ๋ ธ๋ #pragma once template class Node { public: Node(T data); T getData() const; Node* getNext() const; Node* getPrev() const; void setNext(Node* .. 2024. 2. 10. 4. STL ๋ฐ๋ผ์ก๊ธฐ - ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Doubly Linked List) ๊ตฌํ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ? ์ฌ๊ธฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ํ ๊ฐ๋ ์ ์๊ฒ ๋์๊ณ ์ฌ๊ธฐ์ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํด๋ณด์๋ค. ๋, ์์ ํฌ์คํ ์์ ์ฐ๊ฒฐ์ ๋ํ ๋ฐฉ๋ฒ์ ๋งํ๋๋ฐ '์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ' ๋ ์๋ฐฉํฅ(์ด์ค)์ผ๋ก ๊ตฌ์ฑ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ฆ, ์ฑ๊ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์ฝ์ค ์ฌํ์ด๋ผ๋ฉด ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์์ ์ฌํ์ด๋ค. ์ด์ ๋ํด์ ๋ด๊ฐ ์๊ฐํ ์์์ด๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ์๊ฐํด๋ณด๊ณ ๋น์ทํ ์์๋ฅผ ์ฐพ์์ ๋ณธ์ธ๋ง์ ๊ฐ๋ ์ผ๋ก ์ดํดํ๊ธธ.. ์ด๋ฒ STL ๋ฐ๋ผ์ก๊ธฐ ํฌ์คํธ๋ standard library์ธ list๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ๋ค. ๋จผ์ , list์ ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง ํ ๋ฒ ์์๋ณด์. ์ฐ๋ฆฌ๋ STL list์ ์ด๋ค ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด์๋์ง ํ์ ํ ๋ค์ ์ด๋ฅผ ์ ๋ฆฌํ ๊ฒ์ด๋ค. ๊นํ๋ธ ์ด์์ ๊ตฌํํ ๋ด์ฉ์ ์์ฑํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ ํ์งํ ๋ฆฌ์ ์ ์ฅํ .. 2024. 2. 7. 3. STL ๋ฐ๋ผ์ก๊ธฐ - ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Singly Linked List) ๊ตฌํ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ? ์ด์ 2. Linked List (์ฐ๊ฒฐ ๋ฆฌ์คํธ) ํฌ์คํธ์์ ์ค๋ช ๋ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ ๊ฐ์ '์ฐ๊ฒฐ'๋์ด ์๋ค๊ณ ํ๋๋ฐ, ์ฐ๊ฒฐ์ ์๋์ ๊ฐ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. A ์์ B๋ก ๊ฐ ๋(๋จ๋ฐฉํฅ), A ใ ก> B ๋๋ B ใ ก> A A ์์ B๋ก ๊ฐ๊ณ B์์๋ A๋ก ๊ฐ ์ ์์ ๋(์๋ฐฉํฅ), A B ๋๋ A ใ ก B ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ด ์ค, ๋จ๋ฐฉํฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ด๋ค. ๋์ , ์ฃผ์ํ ์ ์ด ์๋ค. A๊ฐ ์์์ , B๊ฐ ์ข ์ ์ธ ๊ฒฝ์ฐ์๋ B์์ A๋ก ๊ฐ ์ ์๋ค. ์ฆ, ์ํ์ด ๋ฐ์ํ์ง ์๋๋ค๋ ์ ์ด๋ค. A ใ ก> B ใ ก> A ใ ก > B ( X ) A ใ ก> B ใ ก> ๋ ( O ) ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ด๊ฒ ๋์ด๋ค. ๊ทธ๋ผ, ์ฃผ๋ก ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ .. 2024. 2. 4. 2. ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked List) ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ? ๋จผ์ , List๋ฅผ ์๊ฐํ๋ฉด ์ญ ~ ๋์ด๋์ด ์๋ ๊ฒ์ด ๋ ์ค๋ฅด์๋์? ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ง ๊ทธ๋๋ก ์ญ ~ ๋์ด๋์ด ์๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ฐ๊ฒฐํ๊ณ ์๋ ๊ฒ์ด์ฃ . ์ด? ์ญ ~ ๋์ด๋์ด์๊ณ ์ฐ๊ฒฐ๋์ด์๋ ๊ฒ์ '๋ฐฐ์ด' ์๋๊ฐ์? ๋ง์ต๋๋ค. ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ๋ณธ์ด์ ๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ผ๋ก ๋์ด๋์ด ์๋ ๊ฒ์ ๋ฐฐ์ด์ ๋๋ค. ๊ทธ๋ผ ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ฐฐ์ด(Array)๊ฐ ์๋๋ฐ ์ Linked List๋ฅผ ์ฌ์ฉํ๋์? ๋ฐฐ์ด๊ณผ Linked List์๋ ์์ฐํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์์ ํฌ์คํ ์์ ๊ฐ ์๋ฃ๊ตฌ์กฐ๋ ํ์์ ๋ฐ๋ฅธ ์ฌ์ฉ์ฒ๊ฐ ์๊ณ , ์ฌ์ฉ์๊ฐ ์ ๋์ ์ผ๋ก ์ฌ์ฉํด์ผ ํจ์ ํํํ์ต๋๋ค. ๊ทธ๋์ ๋ฐฐ์ด์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์๊ณ Linked List๋ผ๋ ์๋ฃ๊ตฌ์กฐ์์ ์ฐจ์ด์ ์ ์์์ผํฉ๋๋ค. ์ฐจ์ด์ ์.. 2024. 2. 4. ์ด์ 1 2 ๋ค์