[자료구조/Python] 세그먼트 트리(Segment Tree)
세그먼트 트리(Segment Tree) 구간 합, 최소값, 최대값 등의 쿼리를 빠르게 처리하기 위해 사용되는 자료구조 이진 트리(binary tree)를 기반으로 하며, 각 노드는 해당 구간의 합, 최소값, 최대값 등의 값을 저장한다. 1. 구성 기본 배열을 이용하여 세그먼트 트리를 초기화, 배열의 각 요소가 세그먼트 트리의 각 리프 노드에 대응된다. 이진 트리의 성질을 이용하여, 각 노드가 나타내는 구간을 두 개의 서브트리로 나눈다. 각 노드에 대해, 해당 구간의 합, 최소값, 최대값 등의 값을 계산하여 저장한다. 각 쿼리에 대해, 세그먼트 트리를 탐색하여 필요한 값을 계산한다. 리프 노드 : 배열의 그 수 자체 다른 노드 : 왼쪽 자식과 오른쪽 자식의 합을 저장 2. 시간 복잡도 트리의 높이가 log..
2023. 3. 24.
[Python] 파이썬 딕셔너리 값 정렬 (key, value)
딕셔너리를 자주 사용하지 않아서 그런지, 한번 사용할 때마다 방법이 가물가물했다. 블로그에 딱 정리해두고 내 머리에도 정리해두자! 👶 dict_ex = { 'b':5, 'c':4, 'B':1, 'a': 2 } 1. key를 기준으로 오름차순 정렬 딕셔너리에 .item() 을 해주면, 각 key, value가 들어있는 tuple 리스트로 변한다. dict_ex = { 'b':5, 'c':4, 'B':1, 'a': 2 } print(dict_ex.items()) sorted()에 인자로 위에서 구한 튜플(dict_ex.items())을 전달하여 주면 오름차순으로 정렬된다. sorted_dict = sorted(dict_ex.items()) print(sorted_dict) 참고로 items를 이용하지 않고,..
2023. 1. 24.