패스잇
CS 기초 · 심화

대용량 텍스트 데이터에서 모든 반복되는 부분 문자열을 효율적으로 찾거나, 두 문자열의 최장 공통 부분 문자열(Longest Common Substring)을 찾는 문제에 Suffix Array와 Suffix Tree를 어떻게 적용할 수 있는지 설명하고, 두 자료구조의 구현 복잡도, 공간 효율성, 그리고 특정 문제 해결에 있어서의 장단점을 비교 분석하시오.

힌트 · Suffix Array는 공간 효율적이고 구현이 비교적 쉬우며, Suffix Tree는 개념적으로 강력하고 다양한 문자열 문제에 유연하게 적용되지만 구현이 복잡합니다. 두 자료구조 모두 문자열의 모든 접미사를 정렬하거나 구조화하여 패턴 매칭 및 부분 문자열 문제에 활용됩니다.

Suffix ArraySuffix TreeLCP (Longest Common Prefix) Array시간 복잡도 (O(n log n), O(n))공간 복잡도 (Suffix Array < Suffix Tree)

모범답안

면접관님, 대용량 텍스트 데이터에서 반복되는 부분 문자열을 찾거나 최장 공통 부분 문자열을 찾는 문제에 Suffix Array와 Suffix Tree를 활용할 수 있습니다.

Suffix Array는 문자열의 모든 접미사를 사전순으로 정렬한 배열입니다. LCP(Longest Common Prefix) 배열과 함께 사용하면 반복되는 부분 문자열이나 최장 공통 부분 문자열을 효율적으로 찾을 수 있습니다. 구현이 비교적 간단하고 공간 효율성이 좋습니다. 시간 복잡도는 정렬 알고리즘에 따라 O(n log n) 정도입니다.

Suffix Tree는 문자열의 모든 접미사를 트리 형태로 표현한 자료구조입니다. 개념적으로 강력하며 다양한 문자열 문제에 유연하게 적용할 수 있습니다. 하지만 구현이 복잡하고 Suffix Array보다 공간을 더 많이 사용합니다. 시간 복잡도는 O(n)입니다.

특정 문제에 따라 장단점이 있습니다. 공간 효율성이 중요한 경우에는 Suffix Array가 유리하고, 복잡한 문자열 패턴 분석이 필요한 경우에는 Suffix Tree가 더 적합할 수 있습니다. 예를 들어, 게놈 분석과 같이 매우 큰 데이터셋에서는 Suffix Array의 공간 효율성이 큰 장점이 됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 알고리즘 면접 질문

← 알고리즘 면접 질문 전체 보기