-
[Algorithm] 프로그래머스 C++ : 더 맵게Algorithm 2020. 8. 10. 16:27
https://programmers.co.kr/learn/courses/30/lessons/42626#
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같��
programmers.co.kr
우선순위큐 개념만 알면 쉽게 풀 수 있는 문제
pq는 우선순위큐이기 때문에 push를 하면 안에서 자동으로 오름차순으로 정렬되고 저장된다
그래서 그냥 도달해야하는 스코빌 지수가 될 때까지 while을 돌리면서
top값(우선순위큐의 맨 앞에 있는 값)을 만지면서 계산하고
새로운 스코빌 지수를 push해주면 된다
Code
#include <string> #include <vector> #include <iostream> #include <queue> using namespace std; int solution(vector<int> scoville, int K) { int answer = 0; priority_queue<int, vector<int>, greater<int>> pq; for(int e: scoville) pq.push(e); while(pq.top() < K) { // 스코빌 지수를 K 이상으로 만들 수 없는 경우 -1 리턴 if(pq.size()==1) return -1; // 제일 작은 값 int tmp1 = pq.top(); pq.pop(); // 그다음 작은 값 int tmp2 = pq.top(); pq.pop(); // 섞은 값 넣기 int new_scoville = tmp1 + (tmp2*2); pq.push(new_scoville); answer++; } return answer; }
* 우선순위큐 초기화 방법
난 for문으로 스코빌 파라미터 벡터를 우선순위큐에 넣어줬는데
선언시 바로 초기화할 수 있는 아래와 같은 방법도 있다!
priority_queue<int,vector<int>,greater<int>> pq (scoville.begin(),scoville.end());
* 우선순위큐의 종류 및 선언 방법
https://travelbeeee.tistory.com/126
[C++] STL Priority_Queue Library 기본 명령어 정리
안녕하세요, 여행벌입니다. 오늘은 우선순위큐(Priority Queue)에 대해서 알아보도록 하겠습니다. 1. Priority_Queue(우선순위큐) 란? Priority_Queue는 Queue의 한 종류로 이름 그대로 우선순위에 따라 정렬된
travelbeeee.tistory.com
'Algorithm' 카테고리의 다른 글
[Algorithm] 프로그래머스 C++ : 이중우선순위큐 (4) 2020.08.15 [Algorithm] 프로그래머스 C++ : 디스크 컨트롤러 (0) 2020.08.14 [Algorithm] 프로그래머스 C++ : 프린터 (0) 2020.08.09 [Algorithm] 프로그래머스 C++ : 다리를 지나는 트럭 (2) 2020.08.07 [Algorithm] 프로그래머스 C++ : 기능개발 (0) 2020.08.06