힙 - 더 맵게
https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
priority_queue로 선언한 q를 오름차순으로 정의했고, MIN HEAP과 동일한 형태로 만들었다.
연산에 필요한 첫번째 요소, 두번째 요소는 변수에 각각 저장 후 pop시켜주고, (첫번째 + 두번째 요소*2)를 push해준다.
priority_queue기 때문에 자동으로 오름차순으로 정렬된다.
코드
#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>> q(scoville.begin(), scoville.end());
while(q.top() < K && q.size() >= 2){
int top = q.top();
q.pop();
int second = q.top();
q.pop();
q.push(top + second*2);
answer++;
}
if(q.size() < 2 && q.top() < K ) answer = -1;
return answer;
}
int main(int argc, const char *argv[])
{
vector<int> scoville;
int K = 7;
// scoville.push_back(1);
// scoville.push_back(2);
// scoville.push_back(3);
// scoville.push_back(9);
// scoville.push_back(10);
// scoville.push_back(12);
scoville.push_back(1);
scoville.push_back(2);
K=3;
solution(scoville, K);
return 0;
}
'코딩테스트 연습 > programmers' 카테고리의 다른 글
[Programmers] 스택/큐 - 기능개발 (0) | 2022.04.01 |
---|---|
[Programmers] sort > 가장 큰 수 (0) | 2022.04.01 |
[Programmers] heap > 이중우선순위큐 (0) | 2022.04.01 |
[Programmers] heap > 디스크 컨트롤러 (0) | 2022.04.01 |
[Programmers] hash > 전화번호 목록 (0) | 2022.04.01 |