-
[백준 14426] 접두사 찾기백준/문자열 2024. 1. 10. 20:30
트라이로 구현하면 된다.
일단 모든 문자열을 트라이에 넣고
검색할 문자열을 트라이 내에서 한 글자씩 따라가되
만약 다음 글자노드의 주소가 null이면 해당 접두사는 없다는 뜻이므로 해당 문자열 탐색을 종료한다.
#include <iostream> #include <string> using namespace std; typedef struct _Node { struct _Node* childs[26] = { NULL, }; bool isWord = false; }Node; void insert(Node* root, string s) { Node* cur = root; for (int i = 0; i < s.size(); i++) { int idx = s[i] - 'a'; if (cur->childs[idx] == NULL) { cur->childs[idx] = new Node; } cur = cur->childs[idx]; } cur->isWord = true; } bool checkprefix(Node* root, string target) { Node* cur = root; for (int i = 0; i < target.size(); i++) { if (cur->childs[target[i] - 'a'] == NULL) { return false; } cur = cur->childs[target[i] - 'a']; } return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N, M; cin >> N >> M; string s; Node* root = new Node; for (int i = 0; i < N; i++) { cin >> s; insert(root, s); } int cnt = 0; for (int i = 0; i < M; i++) { cin >> s; if (checkprefix(root, s)) cnt++; } cout << cnt; return 0; }'백준 > 문자열' 카테고리의 다른 글
[백준 1316] 그룹 단어 체커 (0) 2024.02.23 [백준 5052] 전화번호 목록 (2) 2024.01.10 [백준 1283] 단축키 지정 (1) 2024.01.10 [백준 2204] 도비의 난독증 테스트 (0) 2023.03.26 [백준 3048] 개미 (0) 2023.03.23