LCA 에 관하여
·
algorithm
최소 공통 조상(LCA, Lowest Common Ancestor) 이란 트리에서 두 노드의 가장 가까운 공통 조상을 의미합니다. 이는 트리 구조에서 두 노드 간의 관계를 파악하거나 최단 거리 등을 찾을 때 유용하게 사용됩니다.1. 최소 공통 조상의 필요성트리에서 두 노드 간의 관계 파악효율적인 최단 경로 탐색2. LCA 알고리즘의 종류LCA를 구현하는 대표적인 방법은 다음과 같습니다.1. 단순 탐색시간 복잡도: O(N)가장 간단한 방법으로, 루트에서부터 탐색하여 두 노드의 공통 조상을 찾습니다.2. 이진 트리에서의 재귀적 탐색시간 복잡도: O(N)트리를 한 번 순회하면서 두 노드의 공통 조상을 찾습니다.3. Sparse Table (희소 테이블)시간 복잡도: 전처리 O(NlogN), 쿼리 O(logN)..
세그먼트 트리에 관하여
·
algorithm
세그먼트 트리는 구간 쿼리를 효율적으로 처리하기 위한 트리 형태의 자료구조로, 배열 내 특정 범위의 합, 최소값, 최대값 등의 연산을 빠르게 수행할 수 있습니다. 1. 세그먼트 트리의 구조세그먼트 트리는 배열을 구간 단위로 나누어 트리 형태로 표현합니다. 트리의 각 노드는 배열의 특정 구간을 나타내며, 노드의 값은 해당 구간의 연산(합, 최소값 등) 결과를 저장합니다.장점: 구간 연산을 효율적으로 수행 가능단점: 메모리 사용량이 높음2. 세그먼트 트리의 동작 원리세그먼트 트리는 크게 다음 두 가지 연산을 지원합니다.구간 질의(Query)특정 구간에 대한 합, 최소값, 최대값 등의 값을 빠르게 얻을 수 있습니다.값 갱신(Update)특정 위치의 값을 변경하면 연관된 모든 노드의 값을 갱신합니다.3. 시간 ..
트라이(Trie) 알고리즘에 관하여
·
algorithm
트라이는 문자열을 효율적으로 저장하고 탐색하기 위한 트리 자료구조로, 특히 접두사를 공유하는 문자열 집합에서 강력한 성능을 발휘합니다. 1. 트라이의 개념과 구조트라이(Trie)는 트리 형태의 자료구조로, 문자열의 각 문자를 노드로 저장하여 문자열을 효율적으로 탐색할 수 있도록 구성됩니다. 트라이의 각 노드는 문자의 존재 여부를 나타내며 자식 노드를 통해 문자열이 이어집니다.장점: 빠른 문자열 탐색, 자동완성 기능 지원단점: 공간 복잡도가 상대적으로 높음2. 트라이 알고리즘의 동작 원리트라이 알고리즘은 크게 세 가지 연산으로 이루어집니다.문자열 삽입 (insert)문자열을 노드 단위로 삽입하며, 마지막 문자 노드에 문자열의 끝을 표시합니다.문자열 검색 (search)트리를 순회하며 문자열이 존재하는지 확..