Trie를 구현해 놓고 그 주솟값을 배열에 저장해 놓으신 것 같은데요. 제가 트라이 짤 때 메모리 해제하기 귀찮아서 쓰던 방식인데.. ㅎㅎ
Trie는 문자의 총 갯수만큼 할당이 되어요.
일단 한 전화번호당 나올 수 있는 문자의 수는 최대 10개이고, 전화번호 수는 10^4개인데
10^4개의 노드 주소만 가지고 있겠다는 건 무리수죠. 최소한 10^5 이상 선언해 주시고요.
그리고 알고리즘 구조상
ABC
ABCDE
는 잘 판단하겠지만
ABCDE
ABC
는 판단하지 못할겁니다.
왜냐하면 ABCD(E)에서 끝났는데
다음에 ABC가 들어왔을 때, 탐색하는 과정에서 Term이 아니기 때문에, 한 번호가 다른 번호의 접두어가 아니다. 라고 판단을 하는데
실제로는 ABC는 ABCDE의 접두어입니다. 그러면 어떻게 판단해야 할 지 잘 생각해 보세요.
mmx3d1234 4년 전
런타임에러가 발생하는데 원인을 모르겠습니다.