Oh My Algorithm
📦자료구조

자료구조 알고리즘

데이터를 담고 꺼내는 그릇의 설계. 아래 7개 항목을 인터랙티브 시각화로 단계별로 학습해 보세요.

📦스택 (Stack)

마지막에 넣은 것을 가장 먼저 꺼내는 후입선출(LIFO) 구조입니다. 한쪽 끝(top)에서만 삽입·삭제가 일어나며, 함수 호출 스택·실행 취소·괄호 검사·DFS의 뼈대가 됩니다.

O(1) push/pop
📦큐 (Queue)

먼저 넣은 것을 먼저 꺼내는 선입선출(FIFO) 구조입니다. 뒤(rear)에서 넣고 앞(front)에서 빼며, BFS·작업 대기열·버퍼링의 기반이 됩니다.

O(1) enqueue/dequeue
📦덱 (Deque)

양쪽 끝에서 모두 삽입·삭제가 가능한 이중 종단 큐입니다. 스택과 큐를 모두 흉내낼 수 있어 슬라이딩 윈도우·회문 검사·양방향 탐색에 활용됩니다.

O(1) 양끝 삽입/삭제
📦연결 리스트 (Linked List)

각 노드가 값과 다음 노드를 가리키는 포인터로 이어진 구조입니다. 연속된 메모리가 필요 없어 삽입·삭제가 O(1)이지만, 임의 접근은 O(n)으로 순차 탐색해야 합니다.

삽입 O(1) · 탐색 O(n)
📦이진 탐색 트리 (BST)

왼쪽 자식 < 부모 < 오른쪽 자식 규칙을 지키는 이진 트리입니다. 정렬된 구조 덕분에 탐색·삽입·삭제를 평균 O(log n)에 처리하지만, 한쪽으로 치우치면 O(n)까지 퇴화합니다.

평균 O(log n)
📦힙 (Heap)

부모가 항상 자식보다 작은(최소 힙) 완전 이진 트리로, 배열로 구현됩니다. 루트가 항상 최솟값이라 우선순위 큐의 표준 구현이며, 다익스트라·힙 정렬의 핵심입니다.

삽입/삭제 O(log n)
📦해시 테이블 (Hash Table)

키를 해시 함수로 버킷 인덱스에 매핑해 평균 O(1)에 저장·조회합니다. 서로 다른 키가 같은 버킷으로 충돌하면 체이닝(연결 리스트)이나 개방 주소법으로 해결합니다.

평균 O(1)