Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
## ๐Ÿ“– ํ•™์Šต ์ฃผ์ œ

- **์ฃผ์ œ**: ๊ทธ๋ž˜ํ”„
- **๋‚ ์งœ**: 2024-10-28

---

## ๐Ÿ“Œ ํ•™์Šต ๋‚ด์šฉ ์š”์•ฝ

### [๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜์™€ ๊ตฌํ˜„]

**๊ทธ๋ž˜ํ”„**

- `๊ทธ๋ž˜ํ”„(Graph)` : ์ •์ ์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ„์„  ํ˜น์€ ๋งํฌ๋กœ ์—ฐ๊ฒฐํ•œ ํ˜•ํƒœ
- ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„
- `์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„(connected graph)` : ์ž„์˜์˜ ๋‘ ์ •์  ์‚ฌ์ด์˜ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„
- `๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„(disconnected graph)` : ์ •์  ์‚ฌ์ด์— ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„
- `๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(directed graph)` : ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„
- `๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(undirected graph)` : ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„
- `๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„(weighted graph)` : ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ๋ถ€์—ฌ๋œ ๊ทธ๋ž˜ํ”„
- ๋น„์šฉ(cost) : ๊ฐ„์„ ์— ๋ถ€์—ฌ๋œ ๊ฐ’
- `์„œ๋ธŒ ๊ทธ๋ž˜ํ”„(subgraph)` : ํŠน์ • ๊ทธ๋ž˜ํ”„์˜ ์ •์ ๊ณผ ๊ฐ„์„ ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„

**์ธ์ ‘ ํ–‰๋ ฌ ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„**

- N X N ํฌ๊ธฐ์˜ ํ–‰๋ ฌ๋กœ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
- ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

![image (11)](https://github.com/user-attachments/assets/ee80e131-4410-4a3c-b45f-ba96ac09b5e8)

- ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

![image (10)](https://github.com/user-attachments/assets/f88c9048-5e2e-4c20-bded-b9a638f7c421)


**์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„**

- ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ ๋“ค์„ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

![image (9)](https://github.com/user-attachments/assets/a4b5345f-3662-4cfe-bbaa-588081a8a52f)


---

### [๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰๊ณผ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰]

**๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰**

- `DFS(Depth-First Search)` : ๊ทธ๋ž˜ํ”„์—์„œ ๋” ์ด์ƒ ๋ฐฉ๋ฌธ ๊ฐ€๋Šฅํ•œ ์ •์ ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ์ตœ๋Œ€ํ•œ ๊นŠ์ด ํƒ์ƒ‰ํ•˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ•

```java
import java.util.*;

public class DFSExample {
private static void dfs(int node, boolean[] visited, List<List<Integer>> graph) {
// ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ
visited[node] = true;
System.out.print(node + " ");

// ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ฐฉ๋ฌธ
for (int neighbor : graph.get(node)) {
if (!visited[neighbor]) {
dfs(neighbor, visited, graph);
}
}
}

public static void main(String[] args) {
int n = 5; // ๋…ธ๋“œ ๊ฐœ์ˆ˜
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}

// ๊ทธ๋ž˜ํ”„ ์—ฐ๊ฒฐ ์ •๋ณด ์„ค์ •
graph.get(1).add(2);
graph.get(1).add(3);
graph.get(2).add(4);
graph.get(3).add(5);

boolean[] visited = new boolean[n + 1];
System.out.print("DFS: ");
dfs(1, visited, graph);
}
}

```


**๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰**

- BFS(Breadth-First Search) : ๊ทธ๋ž˜ํ”„์—์„œ ๋” ์ด์ƒ ๋ฐฉ๋ฌธ ๊ฐ€๋Šฅํ•œ ์ •์ ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ์ตœ๋Œ€ํ•œ ๋„“๊ฒŒ ํƒ์ƒ‰ํ•˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ•

```java
import java.util.*;

public class BFSExample {
private static void bfs(int start, List<List<Integer>> graph) {
Queue<Integer> queue = new LinkedList<>();
boolean[] visited = new boolean[graph.size()];

queue.add(start);
visited[start] = true;

while (!queue.isEmpty()) {
int node = queue.poll();
System.out.print(node + " ");

for (int neighbor : graph.get(node)) {
if (!visited[neighbor]) {
queue.add(neighbor);
visited[neighbor] = true;
}
}
}
}

public static void main(String[] args) {
int n = 5; // ๋…ธ๋“œ ๊ฐœ์ˆ˜
List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}

// ๊ทธ๋ž˜ํ”„ ์—ฐ๊ฒฐ ์ •๋ณด ์„ค์ •
graph.get(1).add(2);
graph.get(1).add(3);
graph.get(2).add(4);
graph.get(3).add(5);

System.out.print("BFS: ");
bfs(1, graph);
}
}

```


---

### [์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜]

**์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜**

- `์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜` : ํ•œ ์ •์ ์—์„œ ๋ชฉ์ ์ง€ ์ •์ ๊นŒ์ง€ ์ด๋ฅด๋Š” ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
- **์‹ค์ƒํ™œ ์˜ˆ**
- ์ง€๋„ ์„œ๋น„์Šค (์›ํ•˜๋Š” ๋ชฉ์ ์ง€๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ)
- ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ


**๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜**

- `Dijkstraโ€™s Algorithm` : ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์Œ์ด ์•„๋‹Œ ์ˆ˜๋ผ๋Š” ๊ฐ€์ • ํ•˜์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜
- **๋™์ž‘ ๋ฐฉ์‹**
- ์‹œ์ž‘ ์ •์  ์ œ์™ธํ•œ ์ •์  ์ดˆ๊ธฐํ™”
- (์‹œ์ž‘) ์ •์  ๋ฐฉ๋ฌธ
- ๊ฒฝ๋กœ ์ƒ ๊ฐ€์ค‘์น˜ ํ•ฉ๊ณผ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ” ์ƒ ๊ฐ’ ๋น„๊ต
- ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ” ๊ฐฑ์‹  ๊ฐ€๋Šฅํ•˜๋ฉด ๊ฐฑ์‹ 
- ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์  ์ค‘ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์ •์  ๋ฐฉ๋ฌธ
- ๋” ์ด์ƒ ๋ฐฉ๋ฌธํ•  ์ •์ ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

```java
import java.util.*;

public class DijkstraExample {
static class Node implements Comparable<Node> {
int vertex;
int distance;

public Node(int vertex, int distance) {
this.vertex = vertex;
this.distance = distance;
}

// ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๊ฑฐ๋ฆฌ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•œ ๋น„๊ต ํ•จ์ˆ˜
@Override
public int compareTo(Node other) {
return Integer.compare(this.distance, other.distance);
}
}

public static int[] dijkstra(int start, List<List<Node>> graph, int n) {
PriorityQueue<Node> pq = new PriorityQueue<>();
int[] distances = new int[n + 1];
Arrays.fill(distances, Integer.MAX_VALUE);
distances[start] = 0;

pq.add(new Node(start, 0));

while (!pq.isEmpty()) {
Node current = pq.poll();
int currentVertex = current.vertex;
int currentDistance = current.distance;

// ์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ๋…ธ๋“œ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ๋ฌด์‹œ
if (currentDistance > distances[currentVertex]) continue;

// ์ธ์ ‘ ๋…ธ๋“œ ํ™•์ธ
for (Node neighbor : graph.get(currentVertex)) {
int newDist = distances[currentVertex] + neighbor.distance;

// ๋” ์งง์€ ๊ฒฝ๋กœ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ๊ฐฑ์‹ 
if (newDist < distances[neighbor.vertex]) {
distances[neighbor.vertex] = newDist;
pq.add(new Node(neighbor.vertex, newDist));
}
}
}

return distances;
}

public static void main(String[] args) {
int n = 5; // ๋…ธ๋“œ ๊ฐœ์ˆ˜
List<List<Node>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}

// ๊ทธ๋ž˜ํ”„ ์—ฐ๊ฒฐ ์„ค์ • (๋…ธ๋“œ, ๊ฐ€์ค‘์น˜)
graph.get(1).add(new Node(2, 2));
graph.get(1).add(new Node(3, 5));
graph.get(2).add(new Node(3, 3));
graph.get(2).add(new Node(4, 1));
graph.get(3).add(new Node(4, 2));
graph.get(4).add(new Node(5, 1));

int start = 1; // ์‹œ์ž‘ ๋…ธ๋“œ
int[] distances = dijkstra(start, graph, n);

System.out.println("๋…ธ๋“œ " + start + "์—์„œ ๊ฐ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ:");
for (int i = 1; i <= n; i++) {
System.out.println("๋…ธ๋“œ " + i + " : " + distances[i]);
}
}
}
```


---

## ๐Ÿ’ก ์ฐธ๊ณ  ์ž๋ฃŒ

- [adjacency matrix of a graph](https://www.geeksforgeeks.org/adjacency-matrix-meaning-and-definition-in-dsa/)
- [adjacency list of a graph](https://www.geeksforgeeks.org/adjacency-list-meaning-definition-in-dsa/)
- [DFS](https://www.geeksforgeeks.org/depth-first-search-or-dfs-for-a-graph/)
- [BFS](https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/)
- [Dijkstra Algorithm](https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
## ๐Ÿ“– ํ•™์Šต ์ฃผ์ œ

- **์ฃผ์ œ**: ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
- **๋‚ ์งœ**: 2024-10-25

---

## ๐Ÿ“Œ ํ•™์Šต ๋‚ด์šฉ ์š”์•ฝ

### [๋ฐฐ์—ด]

**๋ฐฐ์—ด**

- `๋ฐฐ์—ด` : ์ผ์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด๋œ ์ž๋ฃŒ๊ตฌ์กฐ
- ๊ฐ ์š”์†Œ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ณ ์œ ํ•œ ์ˆœ์„œ ๋ฒˆํ˜ธ์ธ `์ธ๋ฑ์Šค`๋ฅผ ๋งค๊น€
- ์ธ๋ฑ์Šค๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์—ฐ์‚ฐ : O(1)
- ์„œ๋กœ ๋‹ค๋ฅธ N๊ฐœ์˜ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ์—ฐ์‚ฐ : O(N)
- ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์—ฐ์‚ฐ : O(N)
- ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ : O(N)

**์ •์  ๋ฐฐ์—ด**

- ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด
- ํ”„๋กœ๊ทธ๋žจ ๋„์ค‘ ๋ณ€๊ฒฝ X

**๋™์  ๋ฐฐ์—ด**

- ์‹คํ–‰ ๊ณผ์ •์—์„œ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด
- ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ, ์œ ์—ฐํ•˜๊ฒŒ ์š”์†Œ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
- ๋™์  ๋ฐฐ์—ด์„ `๋ฒกํ„ฐ`๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ตฌํ˜„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋„ ์กด์žฌ

---

### [์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ]

**์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ**

- `๋…ธ๋“œ` : ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜(๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์ฃผ์†Œ) ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ตฌ์„ฑ ๋‹จ์œ„
- `์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked list)` : ๋…ธ๋“œ์˜ ๋ชจ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ
- ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ํ•œ ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋Š” ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ
- ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ : ํ—ค๋“œ(Head)
- ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ : ๊ผฌ๋ฆฌ(Tail)
- ์—ฐ์†์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ์—ฐ์†์ ์œผ๋กœ ์ €์žฅํ•  ๋•Œ ์œ ์šฉ
- ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์—ฐ์‚ฐ : O(N) โ†’ ์ˆœ์ฐจ์  ์ ‘๊ทผ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ
- ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์—ฐ์‚ฐ : O(1) โ†’ ์žฌ์ •๋ ฌ์ด ๋ถˆํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ

**์‹ฑ๊ธ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ**
![image (4)](https://github.com/user-attachments/assets/50242e50-cd31-4e46-a94b-35a7d905ec0d)

- `์‹ฑ๊ธ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(singly linked list)` : ๋…ธ๋“œ ๋‚ด์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด, ํ•œ ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋Š” ํ˜•ํƒœ (๋‹จ๋ฐฉํ–ฅ ํƒ์ƒ‰๋งŒ ๊ฐ€๋Šฅ)
- **๋‹จ์ **
- ํŠน์ • ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด `๋‹ค์Œ ๋…ธ๋“œ` ์œ„์น˜ ํ™•์ธ ๊ฐ€๋Šฅ
- `์ด์ „ ๋…ธ๋“œ` ์œ„์น˜ ์•Œ๊ธฐ ์–ด๋ ค์›€


**์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ**
![image (4)](https://github.com/user-attachments/assets/50242e50-cd31-4e46-a94b-35a7d905ec0d)

- `์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(doubly linked list)` : ๋…ธ๋“œ ๋‚ด์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜ ์ •๋ณด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด์ „ ๋…ธ๋“œ์˜ ์œ„์น˜ ์ •๋ณด๋„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํ˜•ํƒœ (์–‘๋ฐฉํ–ฅ ํƒ์ƒ‰ ๊ฐ€๋Šฅ)
- **์žฅ์ **
- ์‹ฑ๊ธ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํƒ์ƒ‰ ์„ฑ๋Šฅ ์™„ํ™”
- **๋‹จ์ **
- ํ•œ ๋…ธ๋“œ์— 2๊ฐœ์˜ ์œ„์น˜ ์ •๋ณด(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ)๋ฅผ ์ €์žฅ โ†’ ์ €์žฅ ๊ณต๊ฐ„ ํ•„์š” ๅคš

**ํ™˜ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ**
![image (5)](https://github.com/user-attachments/assets/cc58b057-274b-4b41-ba2c-b8d75102163e)

- `ํ™˜ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(circular linked list)` : ๊ผฌ๋ฆฌ ๋…ธ๋“œ๊ฐ€ ํ—ค๋“œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ ๋…ธ๋“œ๋“ค์ด ์›ํ˜•์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ˜•ํƒœ
- ํ™˜ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” `์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ` ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
- ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ๋„ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
![image (6)](https://github.com/user-attachments/assets/b52521ce-dc01-4516-b33d-78c512b122de)

- ๋ชจ๋“  ๋…ธ๋“œ ๋ฐ์ดํ„ฐ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ์ˆœํšŒํ•  ๋•Œ ์œ ์šฉ

---

## ๐Ÿ“ˆ ์ถ”๊ฐ€ ํ•™์Šต ํ•„์š”

- **ํ•ด์‹œ ํ…Œ์ด๋ธ”**: ํ•ด์‹œ ํ•จ์ˆ˜, ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•(์ฒด์ด๋‹, ์˜คํ”ˆ ์–ด๋“œ๋ ˆ์‹ฑ ๋“ฑ), ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์žฅ๋‹จ์ .
- **์Šคํƒ๊ณผ ํ**: ๊ฐ๊ฐ์˜ ์ •์˜, ์‚ฌ์šฉ ์‚ฌ๋ก€, ๊ตฌํ˜„ ๋ฐฉ๋ฒ•.
- **ํŠธ๋ฆฌ ๊ตฌ์กฐ**: ์ด์ง„ ํŠธ๋ฆฌ, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ, AVL ํŠธ๋ฆฌ ๋“ฑ์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•.
- **๊ทธ๋ž˜ํ”„ ์ด๋ก **: ๊ทธ๋ž˜ํ”„์˜ ์ •์˜, ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜(DFS, BFS), ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„, ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra, Bellman-Ford).
- **์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฐ ๊ณต๊ฐ„ ๋ณต์žก๋„**: ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์„ฑ๋Šฅ ๋ถ„์„ ๋ฐ ์ตœ์ ํ™”.

---

## ๐Ÿ’ก ์ฐธ๊ณ  ์ž๋ฃŒ

- [Singly Linked List](https://www.geeksforgeeks.org/singly-linked-list-tutorial/)
- [Doubly Linked List](https://www.geeksforgeeks.org/doubly-linked-list/)
- [Circular Linked List](https://www.geeksforgeeks.org/circular-linked-list/)
Loading