백준_14425 문자열 집합 (트라이)Algorithm/Algorithm 문제2024. 3. 7. 16:10
Table of Contents
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_14425_문자열집합 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
tNode root = new tNode(false); //트라이의 루트 노드
int i, j, nowChar;
tNode nowTNode;
for (i=0; i<n; i++) {
String input = br.readLine();
nowTNode = root;
for (j=0; j<input.length(); j++) {
nowChar = input.charAt(j) - 'a';
if (nowTNode.next[nowChar] == null) {
nowTNode.next[nowChar] = new tNode(false);
}
nowTNode = nowTNode.next[nowChar];
if (j == input.length()-1) { //끝 노드는 끝 표시
nowTNode.isEnd = true;
}
}
}
int result = 0;
for (i=0; i<m; i++) {
String input = br.readLine();
nowTNode = root;
for (j=0; j<input.length(); j++) {
nowChar = input.charAt(j) - 'a';
if (nowTNode.next[nowChar] == null) {
break;
}
nowTNode = nowTNode.next[nowChar];
if (j == input.length()-1) {
if (nowTNode.isEnd == true) { //끝 노드이면
result++;
}
}
}
}
System.out.println(new StringBuilder().append(result));
}
static class tNode {
tNode[] next;
boolean isEnd;
public tNode(boolean isEnd) {
this.next = new tNode[26]; //26진 트라이
this.isEnd = isEnd;
}
}
}
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_2042 구간 합 구하기 (세그먼트 트리) (0) | 2024.03.16 |
---|---|
백준_1991 트리 순회 (이진트리, 순회) (0) | 2024.03.08 |
백준_1068 트리 (트리, dfs) (0) | 2024.03.06 |
백준_11725 트리의 부모 찾기 (트리, dfs) (0) | 2024.03.05 |
백준_1414 불우이웃돕기 (mst) (0) | 2024.03.04 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!