[자료구조] 힙 (Heaps)

2022. 2. 5. 15:26·Engineering/Algorithm

Heap이란?


👉 개념

우선순위큐(Priority Queue)에서 사용되는 자료구조이며, 최대값이나 최솟값을 찾는 데 소요되는 시간이 O(1)이다.

하지만 노드 수정시, 힙구조 유지하기 위해 heapify과정을 거쳐 구조를 유지한다. 이는 결국 O(log n)의 시간 복잡도를 가진다.

 

👉 특징

Tree 중 배열에 기반한 완전 이진 트리 형식(왼쪽에서 오른쪽으로 순서대로 차곡차곡 채워진 이진 트리)을 가지며, 최대힙/최소힙 두 종류가 있다.

  • 최대 힙 key(부모 노드) ≥ key(자식 노드)
  • 최소 힙 key(부모 노드) ≤ key(자식 모드)

출처: https://gmlwjd9405.github.io/2018/05/10/data-structure-heap.html

 

완전 이진 트리이기 때문에 삽입/삭제 연산이 배열의 가장 끝에서 발생한다. BST의 경우 삽입/삭제를 위해서 값을 찾아주는 과정이 필요했지만, 힙은 일단 배열의 맨 끝에서 수정이 이루어지기 때문에 BST보다 빠르다.

 

 

Leetcode 문제를 통한 Heap 구현


Python에서는 heapq를 통해 Heap을 구현할 수 있다. 해당 함수를 이용하는 방법과 직접 구현하는 방법을 통해 문제를 풀어볼 것이다. 

문제: https://leetcode.com/problems/relative-ranks/

 

Relative Ranks - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

1. Heapq 함수를 활용한 풀이

 

2. 직접 구현하여 완성한 풀이

'Engineering > Algorithm' 카테고리의 다른 글

[Algorithm] 정렬 알고리즘 간단 정리와 Python 구현 (버블정렬, 선택정렬, 퀵정렬, 병합정렬, 힙정렬)  (0) 2022.02.21
[알고리즘] 다이나믹 프로그래밍 (feat. Leetcode)  (0) 2022.02.06
[자료구조] Binary Search Tree  (0) 2022.02.05
[Leetcode/Python] 5. Longest Palindromic Substring  (0) 2022.01.12
[Leetcode/Python] 48. Rotate Image  (0) 2022.01.12
'Engineering/Algorithm' 카테고리의 다른 글
  • [Algorithm] 정렬 알고리즘 간단 정리와 Python 구현 (버블정렬, 선택정렬, 퀵정렬, 병합정렬, 힙정렬)
  • [알고리즘] 다이나믹 프로그래밍 (feat. Leetcode)
  • [자료구조] Binary Search Tree
  • [Leetcode/Python] 5. Longest Palindromic Substring
AI건축가
AI건축가
LLMOps Engineer로 커리어를 쌓고 있습니다. 저만의 시점으로 AI를 해석하고자 노력합니다. 함께 배우고 성장하는 공간이 되었으면 좋겠습니다. 😊🚀
  • AI건축가
    DeepFlame AI
    AI건축가
  • 전체
    오늘
    어제
    • 분류 전체보기
      • AI
      • Ops
      • Engineering
        • Algorithm
        • CS
        • BigData
        • Tools
      • Personal
        • Toy Project
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Cloud
    algorithm
    db
    scala
    MSA
    DP
    Hive
    LeetCode
    mlops
    PostgreSQL
    deepseek
    세미나
    Python
    airflow
    hadoop
    Bio
    mongoDB
    Ai
    AWS
    ec2
    kubernetes
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
AI건축가
[자료구조] 힙 (Heaps)
상단으로

티스토리툴바