본문 바로가기

Algorithm40

트라이(Trie) 자료구조 트라이(Trie) 자료구조란?트라이(Trie)는 문자열을 효율적으로 탐색하고 저장하기 위한 트리 형태의 자료구조입니다. 특히 문자열이 포함되어 있는지 빠르게 확인하거나, 자동 완성 및 검색 추천과 같은 기능을 구현할 때 유용하게 사용됩니다. 트라이는 문자열의 접두사(prefix)를 기반으로 데이터를 관리하여, 중복되는 접두사를 공유하여 메모리를 절약합니다.트라이의 특징트라이는 루트에서부터 문자열의 각 문자를 노드로 가지는 트리 형태입니다.같은 접두사를 가진 문자열끼리는 공통의 경로를 공유합니다.문자열의 길이가 길어져도 탐색 속도는 문자열의 길이에 비례하여 빠르게 유지됩니다.검색, 자동 완성, 사전 검색 등에 효율적으로 사용됩니다.트라이의 구조각 노드는 문자와 자식 노드에 대한 참조를 가지고 있습니다.마지.. 2025. 3. 22.
Make Queue with 2 stack in Java import java.util.Stack; public class QueueByStack { public static void main(String[] args) { MyQueue queue = new MyQueue(); } static class MyQueue { Stack s1; Stack s2; public MyQueue() { s1 = new Stack(); s2 = new Stack(); } public void offer(int x) { s1.push(x); } public int poll() { if (s2.isEmpty()) { while (!s1.isEmpty()) { s2.push(s1.pop()); } } return s2.pop(); } public int peek() { if (s.. 2024. 4. 6.
Reverse Queue with Java import java.util.Queue; import java.util.Stack; public class ReverseQueue { public static void main(String[] args) { Queue q = new java.util.LinkedList(); q.offer(1); q.offer(2); q.offer(3); q.offer(4); q.offer(5); System.out.println(q); q = reverse(q); System.out.println(q); } public static Queue reverse(Queue q) { Stack stack = new Stack(); while(!q.isEmpty()) { stack.push(q.poll()); } while(!.. 2024. 4. 6.
Reverse Queue with Stack in Java import java.util.Queue; import java.util.Stack; public class ReverseQueue { public static void main(String[] args) { Queue q = new java.util.LinkedList(); q.offer(1); q.offer(2); q.offer(3); q.offer(4); q.offer(5); System.out.println(q); q = reverse(q); System.out.println(q); } public static Queue reverse(Queue q) { Stack stack = new Stack(); while(!q.isEmpty()) { stack.push(q.poll()); } while(!.. 2024. 4. 6.
BFS and DFS with Java BFS(Breadth-First Search, 너비 우선 탐색)와 DFS(Depth-First Search, 깊이 우선 탐색)는 그래프를 탐색하는 두 가지 기본적인 방법입니다. 너비 우선 탐색 (BFS) BFS는 그래프의 가장 가까운 노드부터 탐색하는 방식입니다. 즉, 시작 노드로부터 거리에 따라 순차적으로 탐색합니다. BFS는 큐(Queue)를 사용하여 구현합니다. 특징: 모든 노드를 방문할 때까지 각 노드를 거리 순으로 방문합니다. 사용 경우: 최단 경로를 찾거나, 그래프의 모든 노드를 방문하는 경우에 유용합니다. 깊이 우선 탐색 (DFS) DFS는 그래프의 노드를 깊이 우선으로 탐색하는 방식입니다. DFS는 스택(Stack) 또는 재귀 함수를 사용하여 구현합니다. 특징: 하나의 경로를 끝까지 탐색한.. 2024. 4. 6.
BFS and DFS with Java BFS(Breadth-First Search, 너비 우선 탐색)와 DFS(Depth-First Search, 깊이 우선 탐색)는 그래프를 탐색하는 두 가지 기본적인 방법입니다. 너비 우선 탐색 (BFS) BFS는 그래프의 가장 가까운 노드부터 탐색하는 방식입니다. 즉, 시작 노드로부터 거리에 따라 순차적으로 탐색합니다. BFS는 큐(Queue)를 사용하여 구현합니다. 특징: 모든 노드를 방문할 때까지 각 노드를 거리 순으로 방문합니다. 사용 경우: 최단 경로를 찾거나, 그래프의 모든 노드를 방문하는 경우에 유용합니다. 깊이 우선 탐색 (DFS) DFS는 그래프의 노드를 깊이 우선으로 탐색하는 방식입니다. DFS는 스택(Stack) 또는 재귀 함수를 사용하여 구현합니다. 특징: 하나의 경로를 끝까지 탐색한.. 2024. 3. 24.