[Programmers]#Level2_더 맵게, 우선순위 큐, 최소 힙

2024. 4. 14. 13:19· 문제 풀이/Programmers 문제 풀이
목차
  1. #1. 문제
  2. #2. 풀이
  3. 1. 우선순위 큐
  4. 2. 우선순위 큐에서 스코빌 지수 낮은거 2개 뽑아서 합쳐
  5. #3. 코드

 

#1. 문제

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

#2. 풀이

 

1. 우선순위 큐

 

 

[자료구조]#7_우선순위 큐

[자료구조]#7_우선순위 큐 우선순위 큐 자료구조에 대해 알아보겠습니다. Overview 개념 구현 참고 #0. 개념 1. 우선순위 큐 정의 : 우선순위 큐(Priority Queue)는 원소들이 우선순위에 따라 정렬된 연결

webddevys.tistory.com

우선순위 큐는 원소들이 우선순위에 따라 정렬된 연결 자료구조입니다. 우선순위 큐는 삽입 순서와 무관하게, 우선순위가 가장 높은 원소가 먼저 제거되는 특징을 갖고 있습니다. 일반적으로, 힙 자료구조를 통해 우선순위 큐를 구현합니다. 힙 자료구조를 통해 우선순위 큐는 삽입/제거 수행 시 내부적으로 정렬 작업을 수행하여, 항상 정렬된 상태를 유지합니다.

 

2. 우선순위 큐에서 스코빌 지수 낮은거 2개 뽑아서 합쳐

 

  1. 최소 힙을 구성하는 우선순위 큐를 선언하고, 주어진 스코빌 지수를 모두 삽입해줍니다.
  2. 우선순위 큐를 순회하며, 우선순위가 가장 높은(스코빌 지수가 가장 낮은) 값을 기준 스코빌 지수와 비교합니다. 이때, 스코빌 지수가 가장 낮은 음식이 기준 스코빌 지수보다 낮다면, 2개 원소를 pop()하고, 하나의 값으로 만들어 다시 우선순위 큐에 삽입해줍니다.
  3. 가장 낮은 스코빌 지수가 기준 스코빌 지수보다 높을 때까지 위 동작을 반복해줍니다. 그리고, 섞은 횟수를 세어 결과를 반환해주면됩니다.

 


 

#3. 코드

 

#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(vector<int> scoville, int K)
{
    int answer = 0;
    priority_queue<int, vector<int>, greater<int>> pq;

    for (auto food : scoville)
        pq.push(food);

    while (!pq.empty() && pq.size() > 1 && pq.top() < K)
    {
        int A = pq.top();
        pq.pop();

        int B = pq.top();
        pq.pop();

        pq.push(A + (2 * B));
        answer++;
    }

    return answer;
}

 


 

 

 

 

저작자표시 (새창열림)

'문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글

[Programmers]#Level2_게임 맵 최단 거리, 미로 찾기 유형, 최단 경로 알고리즘, BFS, 너비 우선 탐색  (0) 2024.04.15
[Programmers]#Level3_네트워크, DFS, 깊이 우선 탐색  (0) 2024.04.15
[Programmers]#Level2_전화번호 목록, 해시 자료구조, us 컨테이너, 트라이 검색 트리  (0) 2024.04.14
[Programmers]#Level2_[1] 뉴스 클러스터링, map 컨테이너  (0) 2024.04.08
[Programmers]#Level2_피로도, 완전 탐색, DFS, 깊이 우선 탐색, 백트래킹  (0) 2024.04.08
  1. #1. 문제
  2. #2. 풀이
  3. 1. 우선순위 큐
  4. 2. 우선순위 큐에서 스코빌 지수 낮은거 2개 뽑아서 합쳐
  5. #3. 코드
'문제 풀이/Programmers 문제 풀이' 카테고리의 다른 글
  • [Programmers]#Level2_게임 맵 최단 거리, 미로 찾기 유형, 최단 경로 알고리즘, BFS, 너비 우선 탐색
  • [Programmers]#Level3_네트워크, DFS, 깊이 우선 탐색
  • [Programmers]#Level2_전화번호 목록, 해시 자료구조, us 컨테이너, 트라이 검색 트리
  • [Programmers]#Level2_[1] 뉴스 클러스터링, map 컨테이너
Hardii2
Hardii2
개발 블로그Hardii2 님의 블로그입니다.
Hardii2
개발 블로그
Hardii2
전체
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 웹 개발
      • Node.js
      • React
    • 게임개발
      • DirectX12
      • 관련 지식
      • Unreal C++
      • Unreal 블루프린트
    • 언어
      • Effective C++
      • Basic C++
      • 디자인 패턴
      • 자료구조
      • 기술 질문
    • 문제 풀이
      • BOJ 문제 풀이
      • Programmers 문제 풀이
      • geeksForgeeks 문제 풀이
    • 수학
      • 확률과 통계
      • 게임수학
    • 개인프로젝트
    • 그룹프로젝트
      • PM
      • Dev
    • Github

블로그 메뉴

  • 홈
  • 글쓰기

공지사항

인기 글

태그

  • DP
  • 디자인 패턴
  • 알고리즘
  • BFS
  • set
  • dfs
  • 개발
  • Unreal Blueprint
  • C++
  • 그래프
  • BOJ
  • stl
  • 트리
  • 우선순위 큐
  • Effective C++
  • unreal
  • 기술 질문
  • 최단 경로
  • programmers
  • 정렬

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Hardii2
[Programmers]#Level2_더 맵게, 우선순위 큐, 최소 힙
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.