[개발 일기] 2025.02.14 - 우선순위 큐

2025. 2. 14. 13:20·개발 일기

💡 개요

오늘은 코딩테스트 문제를 풀 때 자주 사용되는 우선순위 큐에 대해 정리해 보자.

 

 

 

📕 우선순위 큐

우선순위 큐란 Queue 인터페이스의 구현체로, Queue의 특징인 선입선출 방식이 아니라, 우선순위 큐에 설정된 우선순위가 높은 요소가 먼저 나오는 방식으로 동작하는 자료구조이다.

 

 

다양한 방법으로 구현 가능한데, 주로 힙(Heap)을 사용한다.

 

 

 

🚀 최소 힙

 

최소 힙은 부모 노드가 자식 노드보다 작은 자료구조를 말한다.

 

 

그렇기 때문에 최소 힙의 루트 노드는 힙에 있는 노드 중에서 가장 작은 값이다.

 

 

 

🚀 최대 힙

 

최대 힙은 부모 노드가 자식 노드보다 큰 자료구조를 말한다.

 

 

그렇기 때문에 최대 힙의 루트 노드는 힙에 있는 노드 중에서 가장 큰 값이다.

 

 

 

🚀 우선순위 큐와 최대 힙, 최소 힙

 

보다시피 최대 힙의 루트 노드는 트리 상의 노드 중에서 가장 큰 값, 최소 힙의 루트 노드는 트리 상의 노드 중에서 가장 작은 값을 나타낸다.

 

 

우선순위 큐에서 이를 활용하면 다음과 같이 사용할 수 있다.

 

  • 값이 작은 요소가 우선적으로 처리될 경우 → 최소 힙 사용
  • 값이 큰 요소가 우선적으로 처리될 경우 → 최대 힙 사용

 

그리고 최대 힙, 최소 힙 모두 완전 이진트리 형태이기 때문에 삽입, 삭제에 연산에 발생하는 시간 복잡도는 O(logN) 이다.

 

 

하지만 탐색 연산에선 힙은 정렬되지 않은 형태이기 때문에 O(N)의 시간복잡도가 발생한다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.02.16 - Transaction Synchronization  (0) 2025.02.16
[개발 일기] 2025.02.15 - Security Context  (0) 2025.02.15
[개발 일기] 2025.02.13 - 자바 record  (0) 2025.02.13
[개발 일기] 2025.02.12 - 스티키 세션  (1) 2025.02.12
[개발 일기] 2025.02.11 - SockJS  (0) 2025.02.11
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.02.16 - Transaction Synchronization
  • [개발 일기] 2025.02.15 - Security Context
  • [개발 일기] 2025.02.13 - 자바 record
  • [개발 일기] 2025.02.12 - 스티키 세션
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

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

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.02.14 - 우선순위 큐
상단으로

티스토리툴바