DFS(Depth-First Search) 그래프 탐색을 위한 알고리즘 중 하나로, 깊이 우선 탐색이라고도 합니다. DFS는 그래프의 모든 노드를 방문하고, 각 노드를 한 번씩만 방문하며 연결된 모든 노드를 탐색합니다. DFS의 작동 방식은 다음과 같습니다: 시작 노드를 방문하고, 방문한 노드를 "방문한 노드" 목록에 추가합니다. 현재 노드와 연결된 이웃 노드들을 확인합니다. 이웃 노드들 중 방문하지 않은 노드가 있으면, 그 이웃 노드로 이동하여 재귀적으로 탐색합니다. 모든 이웃 노드를 방문했거나 더 이상 방문할 이웃 노드가 없으면, 이전 단계로 돌아가서 탐색을 계속합니다. DFS는 스택(Stack) 또는 재귀 함수를 사용하여 구현할 수 있습니다. 스택을 사용하는 경우, 방문한 노드들을 스택에 차례로 쌓..
그래프 노드(node)와 그 노드들을 연결하는 간선(edge)으로 이루어진 자료 구조입니다. 그래프는 현실 세계에서 다양한 상호 관계를 표현하는데 사용됩니다. 예를 들면 지도에서 도시들을 노드로, 도로를 간선으로 표현하는 것이 그래프의 한 예입니다. JavaScript에서 그래프를 구현하는 방법 중 가장 일반적인 두 가지 방법은 "인접 행렬"과 "인접 리스트"입니다. 인접 행렬 (Adjacency Matrix) 인접 행렬은 2차원 배열로 그래프의 연결 정보를 표현합니다. 노드 간 연결 여부를 행렬의 값으로 표현하며, 노드 수가 N개인 그래프라면 NxN 크기의 행렬이 필요합니다. 예를 들어, 노드 1과 노드 2가 간선으로 연결되어 있다면, 인접 행렬의 1행 2열과 2행 1열에 해당하는 값에 연결 정보를 표..
트리(Tree) 계층적인 구조를 표현하는 추상 자료형입니다. 트리는 노드들의 집합과 이들을 연결하는 간선들의 집합으로 구성되며, 한 노드가 다른 노드를 가리키는 방향성을 가진다는 점에서 그래프의 한 종류라고 할 수 있습니다. 트리에서는 노드가 자식 노드를 여러 개 가질 수 있지만, 한 노드가 여러 부모 노드를 가질 수는 없습니다. 루트(Root): 트리의 최상위 노드입니다. 트리는 하나의 루트 노드만을 가집니다. 부모(Parent): 어떤 노드의 직속 상위 노드를 그 노드의 '부모'라고 합니다. 자식(Child): 어떤 노드의 직속 하위 노드를 그 노드의 '자식'이라고 합니다. 형제(Sibling): 같은 부모 노드를 공유하는 노드들을 '형제'라고 합니다. 리프 노드(Leaf Node): 자식이 없는 노..
큐(queue) 데이터 컬렉션을 처리하는 데 사용되는 또 다른 추상 데이터 유형(ADT)입니다. 큐는 컴퓨터과학에서 흔히 사용되는 자료구조 중 하나입니다. 큐는 특정한 규칙에 따라 항목들을 추가하거나 제거하는 리스트와 유사합니다. 이러한 규칙은 선입선출(FIFO, First In First Out)입니다. 즉, 가장 먼저 큐에 추가된 항목이 가장 먼저 제거됩니다. enqueue: 큐의 끝에 항목을 추가합니다. dequeue: 큐의 맨 앞에 있는 항목을 제거하고 반환합니다. front: 큐의 맨 앞에 있는 항목을 조회합니다. 큐에서 항목을 제거하지는 않습니다. isEmpty: 큐가 비어 있는지 확인합니다. size: 큐에 있는 전체 항목 수를 반환합니다. class Queue { constructor() ..