본문 바로가기
성장하기/Python

heapq

by 솔로 슈퍼스타 2023. 6. 14.
728x90

파이썬의 heap은 힙(heap) 자료구조를 구현하기 위한 모듈인 heapq를 말합니다. 힙은 최댓값 또는 최솟값을 빠르게 찾아내기 위해 설계된 특별한 이진 트리 자료구조입니다.

heapq 모듈을 사용하면 리스트를 힙으로 변환하고, 힙에 새로운 요소를 추가하거나 요소를 삭제하는 등의 힙 관련 연산을 수행할 수 있습니다. 이를 통해 최솟값 또는 최댓값을 효율적으로 관리할 수 있습니다.

파이썬의 heapq 모듈은 리스트를 힙으로 다루기 때문에 리스트의 인덱스를 이용하여 힙 내의 요소에 접근할 수 있습니다. 힙은 일반적으로 최소 힙(min heap)으로 구현되어 있어 가장 작은 요소가 항상 루트에 위치하게 됩니다. 최소 힙에서는 루트에 위치한 요소가 최솟값이 되며, 힙 내의 다른 요소들도 일정한 순서를 유지하게 됩니다.

아래는 heapq 모듈을 사용하여 힙을 다루는 간단한 예시입니다:

import heapq

# 리스트를 힙으로 변환
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
heapq.heapify(my_list)
print(my_list)  # 출력: [1, 1, 2, 3, 5, 9, 4, 6, 5]

# 힙에서 최솟값 추출
min_value = heapq.heappop(my_list)
print(min_value)  # 출력: 1
print(my_list)  # 출력: [1, 3, 2, 5, 5, 9, 4, 6]

# 힙에 새로운 요소 추가
heapq.heappush(my_list, 0)
print(my_list)  # 출력: [0, 1, 2, 3, 5, 9, 4, 6, 5]

# 최솟값 확인 (삭제하지 않고)
min_value = my_list[0]
print(min_value)  # 출력: 0

 

위의 예시에서는 리스트를 힙으로 변환한 후 heappop 함수를 사용하여 최솟값을 추출하고, heappush 함수를 사용하여 새로운 요소를 추가하였습니다. heapq 모듈을 사용하면 리스트를 힙으로 쉽게 다룰 수 있으며, 최솟값을 빠르게 찾아내는 등의 효율적인 연산을 수행할 수 있습니다.

'성장하기 > Python' 카테고리의 다른 글

cmp_to_key  (0) 2023.06.14
PriorityQueue  (0) 2023.06.14
filter  (0) 2023.06.14
any  (0) 2023.06.14
append() 와 extend() 의 차이  (0) 2023.06.14