이 포스팅은 이것이 취업을 위한 코딩테스트다 APPENDIX A
코딩테스트를 위한 파이썬 문법 파트
를 읽고 공부한 내용을 정리하는 용도로 작성되었습니다.
APPENDIX A에 수록된 문법 외에 개인적으로 공부한 내용을 추가해 두었으며, 예제는 직접 연습하며 작성하였기에 교재와 다를 수 있습니다.
heapq.heappush(): 원소 삽입
heapq.heappop(): 원소 삭제
힙 정렬은 max heap이나 min heap 트리를 이용한 정렬 방식으로 내림차순 정렬을 위해서는 max heap이, 오름차순 정렬을 위해서는 min heap이 사용된다.
O(NlogN)
- 모든 원소를 차례대로 heap에 삽입한다.
- 힙에 삽입된 모든 원소를 차례대로 result에 담는다.
import heapq
def heapsort(iterable):
heap = []
result = []
for value in iterable:
heapq.heappush(heap, value)
for i in range(len(heap)):
result.append(heapq.heappop(heap))
return result
result = heapsort([1,9,0,7,8,6,3,5])
print(result)
# result
[0, 1, 3, 5, 6, 7, 8, 9] # 오름차순 정렬
- 모든 원소에 -를 붙인 값을 heap에 삽입한다.
- heap의 원소를 꺼낸 뒤 다시 -를 붙여 result에 담는다.
def heapsort(iterable):
heap = []
result = []
for value in iterable:
heapq.heappush(heap, -value)
# print(heap)
# [-9, -8, -6, -5, -7, 0, -3, -1]
for i in range(len(heap)):
result.append(-heapq.heappop(heap))
return result
result = heapsort([1,9,0,7,8,6,3,5])
print(result)
# result
[9, 8, 7, 6, 5, 3, 1, 0] # 내림차순 정렬
이 시리즈가 코딩테스트를 공부하는데 조금이나마 도움이 되셨다면 💚를 눌러주세요😉
Source