CS 기초 · 심화
일반적인 세그먼트 트리로는 처리하기 어려운 '구간 내 모든 값에 특정 연산 적용 후 특정 값으로 클램핑' 또는 '구간 내 최댓값을 특정 값으로 변경'과 같은 복잡한 구간 업데이트를 효율적으로 처리하기 위한 Segment Tree Beats(혹은 Advanced Lazy Propagation)의 동작 원리를 설명하고, 어떤 조건에서 이러한 최적화가 가능하며 실제 어떤 문제에 적용될 수 있는지 예시를 들어 설명하시오.
힌트 · Segment Tree Beats는 특정 조건(예: 구간 내 최댓값이 두 번째 최댓값보다 작을 때)을 만족하면 자식 노드로 내려가지 않고도 업데이트를 처리하여 상각 O(log N) 또는 O(log^2 N)의 시간 복잡도를 달성합니다. 이는 구간의 모든 값을 직접 변경하는 대신, 노드의 메타데이터를 활용하여 효율성을 높입니다.
Segment Tree BeatsLazy PropagationMonotonicityConvex Hull TrickLi Chao Tree
모범답안
Segment Tree Beats는 일반 세그먼트 트리로는 어려운 복잡한 구간 업데이트를 효율적으로 처리하는 기법입니다. 핵심은 '구간 내 최댓값'과 '두 번째 최댓값' 같은 메타데이터를 활용하는 것입니다. 예를 들어, 구간 내 모든 값을 x로 클램핑할 때, 구간의 최댓값이 이미 x보다 작거나 같다면 자식 노드로 내려갈 필요 없이 해당 노드에서 처리가 완료됩니다. 또한, 구간 최댓값을 x로 변경하는 경우에도, 최댓값이 x보다 크고 두 번째 최댓값이 x보다 작다면, 최댓값만 x로 변경하고 나머지는 그대로 두는 방식으로 효율성을 높입니다. 이러한 최적화는 구간 내 값들의 분포나 업데이트 연산의 특성이 특정 조건을 만족할 때 가능하며, 주로 구간 최댓값 변경, 구간 합, 구간 최솟값 갱신 등 다양한 문제에 적용될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 알고리즘 면접 질문
- 네트워크 플로우(Network Flow) 문제 해결을 위한 알고리즘 중 Dinic 알고리즘이 Edmonds-Karp나 Ford-Fulkerson 알고리즘에 비해 실제 환경에서 훨씬 효율적인 이유를 설명하고, Dinic 알고리즘의 핵심 단계인 레벨 그래프 구성과 블로킹 플로우(Blocking Flow)를 찾는 과정을 자세히 설명하시오.
- 대용량 텍스트 데이터에서 모든 반복되는 부분 문자열을 효율적으로 찾거나, 두 문자열의 최장 공통 부분 문자열(Longest Common Substring)을 찾는 문제에 Suffix Array와 Suffix Tree를 어떻게 적용할 수 있는지 설명하고, 두 자료구조의 구현 복잡도, 공간 효율성, 그리고 특정 문제 해결에 있어서의 장단점을 비교 분석하시오.
- 평면상의 수많은 선분들 중에서 교차하는 모든 쌍을 효율적으로 찾는 문제(Line Segment Intersection)를 해결하기 위한 Line Sweep 알고리즘의 원리를 설명하고, 이 알고리즘이 O((N+K) log N) (N은 선분 개수, K는 교차점 개수) 시간 복잡도를 가지는 이유를 자료구조(예: BST)의 역할과 함께 설명하시오.
- 대규모 데이터셋에서 정확한 해를 찾기 어렵거나 시간이 너무 오래 걸릴 때, 확률적 알고리즘(Probabilistic Algorithms)이 대안이 될 수 있습니다. Monte Carlo 알고리즘과 Las Vegas 알고리즘의 차이점을 명확히 설명하고, 각각 어떤 종류의 문제에 적합하며 실제 시스템(예: 스트리밍 데이터 처리, 암호화)에서 어떻게 활용될 수 있는지 구체적인 사례를 들어 설명하시오.
- NP-hard 문제의 경우 다항 시간 내에 최적해를 찾는 것이 불가능합니다. 이럴 때 근사 알고리즘(Approximation Algorithms)을 사용하는데, TSP(Traveling Salesperson Problem)나 Vertex Cover와 같은 문제에서 근사 알고리즘이 어떻게 설계될 수 있는지 설명하고, 근사 비율(Approximation Ratio)의 의미와 중요성, 그리고 이를 증명하는 방법에 대해 논하시오.