Data Structure 3

트라이(Trie) - 효율적인 문자열 검색을 위한 자료구조

들어가며 각종 웹 서비스와 애플리케이션에서는 사용자의 검색어 입력에 대해 빠르게 응답해야 합니다. 이러한 요구를 충족시키는 데 효과적인 자료구조 중 하나가 바로 '트라이(Trie)'입니다. 이번 시간에는 트라이 자료구조에 대해서 알아보겠습니다. 트라이가 뭔데? 트라이는 문자열의 집합을 저장하고, 주어진 문자열을 빠르게 찾는 데 특화된 트리 기반의 자료구조입니다. 각 노드는 문자를 저장하며, 루트에서 어떤 노드까지의 경로를 따라 내려가며 만나는 문자들을 모으면 해당 경로에 대응되는 문자열을 얻을 수 있습니다. 예를 들어 문자열이 'be', 'bee', 'bar', 'car', 'cat'인 경우 트라이의 구조는 다음과 같습니다. root / \ b c /| | e a a | | / \ e r r t 그래서 ..

Data Structure/Trie 2023.12.22

BOJ 14426 접두사 찾기

문제 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 예시 코드 class TrieNode { constructor() { this.children = {}; this.isTerminal = false; } } class Trie { constructor() { this.root = new TrieNode(); } insert(key) { let node = this.root; for (let i = 0; i < key.len..

JavaScript에서 Queue 구현하기: 배열 vs 연결 리스트 vs 두 개의 스택

들어가며큐(Queue)는 중요한 자료구조 중 하나로, FIFO(First-In-First-Out) 특성을 가지는데요. 첫 번째로 들어간 요소가 가장 먼저 나옵니다. 이번 포스트에서는 자바스크립트를 사용하여 큐를 구현하는 세 가지 방법에 대해 알아보겠습니다. 1. 배열을 이용한 구현자바스크립트에서 가장 간단하게 큐를 구현하는 방법은 배열(Array)을 사용하는 것입니다.push 메서드로 새 요소를 추가하고, shift 메서드로 첫 번째 요소를 제거합니다. enqueue는 O(1)에 수행됩니다.dequeue는 O(n)에 수행됩니다. 배열에서 첫 번째 요소를 제거하면 모든 요소가 한 칸씩 앞으로 이동해야 하기 때문입니다. 아래는 구현 코드입니다.class Queue { constructor() { th..

Javascript 2023.10.23