펜윅 트리는 세그먼트 트리에서 조금 더 발전한 형태(?)인 것 같다.
세그먼트 트리에서 우측 노드를 잘라내어 좌측 노드들로만 구성되어 있고 비트 연산으로 부분합을 구할 수 있다.
위의 트리 속 노드를 가지고 계산할때 한 비트씩 차이를 주면 값을 알 수 있기 때문이다.
자세한건 직접 해보면 앎.
어디에 쓰이나?
- 부분합을 구할때 쓴다.
왜 쓰이나?
- n부터 k까지의 부분합을 구할 시, 하나하나 구하게 되면 시간 복잡도가 O(n)이 된다.
그러나 트리를 이용하게 되면 O(logN) 형태가 된다. 큰 범위값을 구할때 적은 시간동안 해결하기 위함이다.
'컴퓨터 공학 > 알고리즘' 카테고리의 다른 글
👉 [번역] 객체 인식(Object Recognition) 이해 : 딥러닝 vs 머신러닝 방식 (0) | 2019.10.29 |
---|---|
👉 [SQL] 기본적이고 자주 사용하는 SQL 문법 정리 (0) | 2019.10.20 |
👉 [SQL] column 내 가장 길이 긴 값 찾기 (0) | 2019.06.29 |
백트래킹 (0) | 2018.04.10 |
BFS / DFS (0) | 2018.04.10 |