본문 바로가기

Segment Tree2

[알고리즘 분류] - 세그멘트 트리 세그멘트 트리 문제를 연습하기 위해 다양한 문제를 찾아 시도해봤지만, 정말 어려운 것 같다.. 기본 세그멘트에서 조금이라도 응용을 뻗어나가면 방법을 모르겠는.. 구간 곱, 구간 합, 최소값 이런 것들은 단순히 init과 update의 함수를 조금씩 수정해주면 되는 부분이라 충분히 해결 가능하다. 플레 5 정도 문제는 가장 기초적인 세그먼트 트리를 이용해서 푸는 문제인데, 그 이후로부터는 Lazy Propagation 등의 추가적인 스킬과 응용 능력이 필요한 것으로 보인다. (어려움..) 2020. 9. 20.
[1] Segment Tree Segment Tree 는 다양한 유형의 문제를 빠르게 해결해주는 자료구조이다. 구간에 대한 정보를 구하는 경우, 단순히 정렬한 후 Prefix Sum 을 이용해서 구간합을 빠르게 구할 수 있지만 만약 개별 쿼리 도중 배열에서 특정 요소의 값이 변경되야 하는 경우엔 매번 다시 정렬을 해야 되어 비효율적이다. 이러한 경우, 구간에 대한 정보를 담는 Tree를 구성할 수 있는데, 이를 세그먼트 트리라고 한다. 세그먼트 트리는 기본적으로 Complete Binary Tree이고, 모든 Element에 대한 정보가 트리의 Leaf Node에 포함된다. 그리고 그 위 node들은, 자식 node를 포함하는 구간에 대한 정보를 담는 것이다. 간단하게, 세그멘트 트리를 이용해서 구간합을 구하는 코드의 예시를 보자. .. 2020. 9. 13.