[Algorithm] Priority Queue (우선순위 큐)

2021. 2. 17. 22:16·스터디/Algorithm
728x90

기본적으로 큰 값이 가장 맨 위에 오도록 queue를 쌓는다.

 

priority_queue의 구조는 priority_queue<자료형, 구조체, 비교함수> 이다.

 

따라서 아래와 같이 코드를 짜면 된다. (C++기준)

#include <queue>

priority_queue<int, vector<int>, less<int>> pq;
priority_queue<int, vector<int>, greater<int>> pq;

less<int> : 가장 큰 값이 맨 위에 온다.

greater<int> : 가장 작은 값이 맨 위에 온다.

 

만약 직접 구현한 구조체에 해당하는 비교함수를 쓰고싶다면 아래와 같이 사용하면 된다.

 

#include <queue>

struct node{
    int x, y, cost;
    node(int x, int y, int cost):x(x), y(y), cost(cost){}
};

struct cmp{
    bool operator()(node a, node b){
        return a.cost > b.cost;
    }
};

priority_queue<node, vector<node>, cmp> q;

cmp라는 구조체를 만들고 비교 연산자 함수를 정의하여 priority_queue의 비교함수로 사용한다.

참고로 위 코드는 오름차순 정렬(작은 값 부터 나옴)이다.

큰 값 부터 나오게 하려면 a.cost < b.cost 로 수정하면 된다.

728x90

'스터디 > Algorithm' 카테고리의 다른 글

[Algorithm] Binary Search (이분 탐색)  (0) 2021.02.26
자료형 크기 및 범위 정리  (0) 2021.02.26
[Algorithm] Kruskal Algorithm (크루스칼 알고리즘)  (0) 2021.02.17
[Algorithm] Segment Tree (세그먼트 트리)  (0) 2021.02.11
[Algorithm] Floyd-Warshall Algorithm  (0) 2021.02.07
'스터디/Algorithm' 카테고리의 다른 글
  • [Algorithm] Binary Search (이분 탐색)
  • 자료형 크기 및 범위 정리
  • [Algorithm] Kruskal Algorithm (크루스칼 알고리즘)
  • [Algorithm] Segment Tree (세그먼트 트리)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    프로그래머스
    스프링부트
    LeetCode
    코테공부
    codility
    kafka
    db
    C++
    springboot
    이분탐색
    Python
    쿠버네티스
    코딜리티
    네트워크
    pythoncodingtest
    자료구조
    코딩
    카카오코테
    코테
    스프링
    코딩테스트
    리트코드
    CodingTest
    Spring
    Kotlin
    java
    자바
    MySQL
    금융용어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[Algorithm] Priority Queue (우선순위 큐)
상단으로

티스토리툴바