- 오늘의 학습 키워드 트리 자료구조
- 공부한 내용 본인의 언어로 정리하기
트리 자료 구조: 문자열을 효율적으로 저장하고 검색한다.
- 각 노드는 문자 하나를 나타낸다.
- 루트에서 특정 노드까지의 경로가 하나의 문자열을 형성한다.
- 각 노드들은 자식 노드들을 가리키는 배열, 맵을 가진다.
- 단어의 끝을 표시하는 플래그가 필요하다
수도 코드
TrieNode 클래스:
-children: 자식 노드들을 저장하는 배열
-isEndOfWord: 이 노드에서 단어가 끝나는지 표시
Trie 클래스:
-root: 루트 노드
insert(word):
현재 노드 = 루트
for 각문자 in word:
if 해당 문자의 자식이 없다면:
새 노드 작성
현재 노드 = 자식 노드로 이동
현재 노드의 isEndOfWord = true
search(word):
현재 노드= 루트
for 각 문자 in word:
if 해당 문자의 자식이 없다면:
return false
현재 노드 = 자식 노드로 이동
return 현재 노드의 isEndOfWord
startWith(prefis)
현재 노드 = 루트
for 각 문자 in prefix:
if 해당 문자의 자식이 없다면:
return false
현재 노드 = 자식 노드로 이동
return true
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
왜 접두사 검색에서 containsKey() 를 안쓰는지
- 어떻게 해결했는지
접두사 검색은 경로의 존재여부를 확인하는 것
containsKey()는 정확한 키의 존재여부를 확인하는 것이어서 목적이 다름
- 무엇을 새롭게 알았는지
toCharArray(): String 문자열을 char 개별 문자로 나누고
char[] 배열에 차례대로 해당하는 값을 넣어서 반환
String[] examples = {"가나다라", "Hello", "12345", "가B3라"};
for (String example : examples) {
System.out.println("\n입력 문자열: \"" + example + "\"");
//string -> char[]
char[] charArray = example.toCharArray();
//문자열의 각 문자를 개별적으로 처리하기 위함
//문자열이 char 배열로 분해됨
- 내일 학습할 것은 무엇인지
'【스터디노트】 > ▷TIL' 카테고리의 다른 글
| 코테 스터디 45일차 TIL + 오늘의 학습 키워드 prefix sum (2) | 2025.06.25 |
|---|---|
| 코테 스터디 44일차 TIL + 오늘의 학습 키워드 스택 (1) | 2025.06.20 |
| 코테 스터디 40일차 TIL + 오늘의 학습 키워드 배열 (0) | 2025.06.12 |
| 코테 스터디 39일차 TIL + 오늘의 학습 키워드 위상정렬2 이게더 쉬움 (1) | 2025.06.11 |
| 코테 스터디 38일차 TIL + 오늘의 학습 키워드 위상정렬 (0) | 2025.06.11 |