JNU-econovation / Javs

자바 스터디(잡스)
8 stars 4 forks source link

Trie 자료구조란(김종민) #192

Open rlajm1203 opened 1 month ago

rlajm1203 commented 1 month ago

문제가 무엇인가?

Trie 자료구조가 무엇일까?

왜 이런 문제를 선정하였는가?

영속 자료구조에 대해 찾아보다가 Trie 자료구조라는 걸 알게돼서 가져왔습니다.

자신이 생각한 답변은 무엇인가?

Trie 자료구조

import java.util.HashMap;
import java.util.Map;

class TrieNode {
    // 자식 노드를 저장하기 위한 맵
    Map<Character, TrieNode> children;
    // 단어의 끝인지 여부를 나타내는 플래그
    boolean isEndOfWord;

    // 생성자
    public TrieNode() {
        children = new HashMap<>();
        isEndOfWord = false;
    }
}
public class Trie {
    private TrieNode root;

    // 생성자
    public Trie() {
        root = new TrieNode();
    }

    // 단어 삽입 메서드
    public void insert(String word) {
        TrieNode currentNode = root;
        for (char c : word.toCharArray()) {
            currentNode = currentNode.children.computeIfAbsent(c, k -> new TrieNode());
        }
        currentNode.isEndOfWord = true;
    }

    // 단어 검색 메서드
    public boolean search(String word) {
        TrieNode currentNode = root;
        for (char c : word.toCharArray()) {
            currentNode = currentNode.children.get(c);
            if (currentNode == null) {
                return false;
            }
        }
        return currentNode.isEndOfWord;
    }

    // 접두사 검색 메서드
    public boolean startsWith(String prefix) {
        TrieNode currentNode = root;
        for (char c : prefix.toCharArray()) {
            currentNode = currentNode.children.get(c);
            if (currentNode == null) {
                return false;
            }
        }
        return true;
    }
}

장점

단점

활용 사례

변형

해봅시다

image

rlajm1203 commented 1 month ago

[ typeword , type ]

     t - y - p - e - w - o - r - d

flag :