주로 배열이나 리스트와 같은 선형 데이터 구조에서 사용되며, 두 개의 포인터를 동시에 움직여가며 문제를 해결합니다.적용 예시: 한 쌍의 값이나 조건을 충족시키는 문제에 사용할 수 있습니다.주어진 정렬된 정수 배열에서 합이 0이 되는 첫 번째 쌍을 찾는 함수를 작성합니다
배열(array)은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 자료구조입니다.접근(Access)배열은 랜덤 접근(random access)가 가능특정 인덱스에 위치한 원소에 접근하는 경우 $O(1)$의 시간복잡도검색(Search) ← 순차 접근이라도 함선형 검색(
스택(Stack)은 LIFO (Last In, First Out) 원칙에 기반한 선형 자료구조입니다. 이는 가장 최근에 Stack에 추가된 항목이 가장 먼저 제거되는 순서를 따른다는 것을 의미합니다. 즉, 마지막으로 들어간 원소가 제일 먼저 나오게 됩니다.스택의 주요
Queue는 FIFO (First In, First Out) 원칙을 따르는 선형 자료구조입니다.가장 먼저 들어온 요소가 가장 먼저 나가는 구조입니다.은행에서 번호표를 뽑고 자신의 순서를 기다리는 모습, 마트에서 계산하기 위해 줄을 서는 모습에서 “대기줄”을 의미하는 Q
Hash Table은 컴퓨터 과학에서 가장 중요하면서도 검색, 삽입, 삭제 작업에 효율적인 자료구조 중 하나입니다.Key-value 형태의 데이터를 저장하고 검색하기 위한 자료구조로, 각 Key에 해당하는 값을 빠르게 찾을 수 있도록 해줍니다.예를 들어, 색상 정보를
어떤 문제나 함수 등이 자신과 성격이 똑같지만 크기가 더 작은 문제를 하나 이상 포함하고 있을 때 재귀적 구조를 가지고 있다고 얘기합니다. 흔히 프로그래밍에서는 함수 내부에서 자신을 다시 호출하는 기능을 제공하는데 이를 재귀(recursion)라고 합니다.재귀는 컴퓨터
트리(Tree)도 루트(Root) 노드에서 시작해서 여러 개의 하위 노드로 이어집니다. 이런 구조는 데이터를 계층적이고 효율적으로 관리할 수 있습니다.노드(Node): 트리를 구성하는 기본 단위. 데이터와 다른 노드를 가리키는 포인터를 포함합니다.루트(Root): 트리
많은 사람들이 데이터베이스 인덱스의 개념을 설명할 때 책의 맨 마지막에 있는 색인(찾아보기)에 비유합니다. 예를 들어서 여러분이 깔끔한 파이썬 탄탄한 백엔드 책을 보고 있다고 가정해 봅시다. 만약에 “트렌젝션”이라는 단어가 책 어디에 나왔는지 찾아야하는 상황이라고 해봅
트라이 이전에는 배열, 해시 테이블, BST, Balanced BST, 문자열 검색 전용 알고리즘(KMP, Boyer-Moore), 그리고 정규 표현식 등으로 효과적으로 문자열 검색이 가능했습니다. 그러나 기존에 사용되던 자료구조로는 문자열 검색에 있어 여러 제약 사항
우선순위 큐(Priority Queue)와 Heap의 관계에 대해 알아보겠습니다. 우선순위 큐는 운영체제(OS)에서 프로세스들의 우선순위를 부여하거나, 애플리케이션에서 프리미엄 회원의 요청을 먼저 처리하는 등 우선순위가 있는 대상을 관리할 때 사용됩니다. 이때, 우선순
그래프는 객체 간의 관계를 정점(Vertex)과 간선(Edge)으로 나타내는 자료구조입니다. 지금까지 살펴본 자료구조 중에서 가장 강력한 표현 능력을 지니며, 현실 세계의 다양한 문제를 효과적으로 모델링하기에 적합합니다.일반적으로 그래프 자료구조를 설명하기 위해서 지하
두 알고리즘은 그래프의 구조와 목적에 따라 적절하게 선택해서 사용할 수 있습니다. DFS는 노드의 깊은 부분을 빠르게 탐색하고자 할 때 유용하며, BFS는 시작 노드로부터 가까운 노드를 먼저 방문하고자 할 때 유용합니다.깊이 우선 탐색은 시작 노드에서 시작하여 하나의