그래프 노드(node)와 그 노드들을 연결하는 간선(edge)으로 이루어진 자료 구조입니다. 그래프는 현실 세계에서 다양한 상호 관계를 표현하는데 사용됩니다. 예를 들면 지도에서 도시들을 노드로, 도로를 간선으로 표현하는 것이 그래프의 한 예입니다. JavaScript에서 그래프를 구현하는 방법 중 가장 일반적인 두 가지 방법은 "인접 행렬"과 "인접 리스트"입니다. 인접 행렬 (Adjacency Matrix) 인접 행렬은 2차원 배열로 그래프의 연결 정보를 표현합니다. 노드 간 연결 여부를 행렬의 값으로 표현하며, 노드 수가 N개인 그래프라면 NxN 크기의 행렬이 필요합니다. 예를 들어, 노드 1과 노드 2가 간선으로 연결되어 있다면, 인접 행렬의 1행 2열과 2행 1열에 해당하는 값에 연결 정보를 표..
트리(Tree) 계층적인 구조를 표현하는 추상 자료형입니다. 트리는 노드들의 집합과 이들을 연결하는 간선들의 집합으로 구성되며, 한 노드가 다른 노드를 가리키는 방향성을 가진다는 점에서 그래프의 한 종류라고 할 수 있습니다. 트리에서는 노드가 자식 노드를 여러 개 가질 수 있지만, 한 노드가 여러 부모 노드를 가질 수는 없습니다. 루트(Root): 트리의 최상위 노드입니다. 트리는 하나의 루트 노드만을 가집니다. 부모(Parent): 어떤 노드의 직속 상위 노드를 그 노드의 '부모'라고 합니다. 자식(Child): 어떤 노드의 직속 하위 노드를 그 노드의 '자식'이라고 합니다. 형제(Sibling): 같은 부모 노드를 공유하는 노드들을 '형제'라고 합니다. 리프 노드(Leaf Node): 자식이 없는 노..
스택(stack) 데이터 컬렉션을 처리하는 데 사용되는 추상 데이터 유형(ADT)입니다. 자료구조에 대해 말하면 스택은 컴퓨터과학에서 매우 중요한 부분입니다. 스택은 특정한 규칙에 따라 항목들을 추가하거나 제거하는 리스트와 유사합니다. 이러한 규칙은 후입선출(LIFO, Last In First Out)입니다. 즉, 가장 마지막에 스택에 추가된 항목이 가장 먼저 제거됩니다. 스택의 핵심 연산은 다음과 같습니다: push: 스택의 맨 위에 항목을 추가합니다. pop: 스택의 맨 위에 있는 항목을 제거하고 반환합니다. peek/top: 스택의 맨 위에 있는 항목을 조회합니다. 스택에서 항목을 제거하지는 않습니다. isEmpty: 스택이 비어 있는지 확인합니다. class Stack { constructor()..
new Set(); JavaScript의 Set은 중복을 허용하지 않는 요소들의 집합입니다. 각 요소는 집합 내에서 단 한 번만 나타납니다. Set을 사용하면, 배열이나 다른 유형의 데이터 구조에서 중복 항목을 쉽게 제거할 수 있습니다. Set 생성 Set은 'new' 키워드를 사용하여 생성합니다. let mySet = new Set(); 이 코드는 빈 Set을 생성합니다. Set은 배열 또는 다른 이터러블 객체를 인수로 사용하여 초기화할 수도 있습니다. let mySet = new Set([1, 2, 3, 4, 5]); Set에 원소 추가 add() 메소드를 사용하여 Set에 원소를 추가할 수 있습니다. mySet.add(6); 이 코드는 6을 Set에 추가합니다. Set에서 원소 제거 delete()..