[프로그래머스] 이중우선순위큐(C++)

2025. 6. 8. 15:58·개발/알고리즘
728x90

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42628

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

코드 구현

#include <iostream>
#include <string>
#include <vector>
#include <set>

using namespace std;

vector<int> solution(vector<string> operations)
{
    // 이중우선순위큐 multiset 이용 
    std::multiset<int> dq;

    for (const auto& op : operations)
    {
        // 삽입
        if (op[0] == 'I')
        {
            int num = stoi(op.substr(2));
            dq.insert(num);
        }
        // 삭제
        else
        {
            if (!dq.empty())
            {
                // multiset의 최솟값 : begin(), 최댓값 : rbegin()
                int num = stoi(op.substr(2));

                // 최댓값 삭제
                if (num > 0)
                    dq.erase(*dq.rbegin());
                // 최솟값 삭제
                else
                    dq.erase(*dq.begin());
            }
        }
    }

    // 큐가 비어있으면 [0, 0] 반환
    if (dq.empty())
        return { 0, 0 };
    // [최댓값, 최솟값] 반환
    else
    {
        int maxNum = *dq.rbegin();
        int minNum = *dq.begin();
        return { maxNum, minNum };
    }
}

 

 

해결 방법


  • 이중우선순위큐의 특징인 최댓값과 최솟값을 빠르게 접근할 수 있는 자료구조인 std::multiset 이용
  • 최솟값 : begin(), 최댓값 : rbegin()으로 접근 가능
  • 입력 받은 문자열의 첫 번째 원소가 I 면 삽입 연산, D 면 삭제 연산
  • 자동 정렬되기 때문에 중복되는 값이 있어도 하나의 원소만 삭제 가능

'개발 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 단속카메라(C++)  (1) 2025.06.12
[백준] 2206번: 벽 부수고 이동하기(C++)  (1) 2025.06.09
[백준] 9663번: N-Queen(C++)  (1) 2025.05.31
[프로그래머스] 정수 삼각형(C++)  (1) 2025.05.31
[프로그래머스] 단어 변환(C++)  (1) 2025.05.26
'개발/알고리즘' 카테고리의 다른 글
  • [프로그래머스] 단속카메라(C++)
  • [백준] 2206번: 벽 부수고 이동하기(C++)
  • [백준] 9663번: N-Queen(C++)
  • [프로그래머스] 정수 삼각형(C++)
Majangnan
Majangnan
  • Majangnan
    개발 모코코
    Majangnan
  • 전체
    오늘
    어제
    • 분류 전체보기 (76) N
      • 개발 (75) N
        • C# (10)
        • SQL (3)
        • Unity (9)
        • Unreal (10)
        • C++ (3)
        • Server (1)
        • DX11 (8)
        • 알고리즘 (30) N
  • 블로그 메뉴

    • 홈
    • 방명록
    • 깃허브
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    언리얼
    프로그래머스
    UnReal
    MAC
    블루프린트
    슈팅게임
    C#
    DX11
    3dlight
    c++
    알고리즘
    상속
    dx3d
    Unity
    DirectX11
    sql
    백준
    Mecanim
    코딩테스트
    blueprint
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Majangnan
[프로그래머스] 이중우선순위큐(C++)
상단으로

티스토리툴바