https://programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
min heap 선언방법 기억해두고
vector<int, vector<int>, greater<int>> min_heap;
벡터나 배열은 선언시 바로 값 대입 가능!
push 하면 자동으로 정렬가능
#include <string>
#include <vector>
#include <queue>
using namespace std;
// min heap을 통해 구현
int solution(vector<int> scoville, int K) {
int answer = 0;
priority_queue<long long, vector<long long>, greater<long long>> minHeap(scoville.begin(), scoville.end());
while (1) {
if (minHeap.top() >= K) {
break;
}
if ((int)minHeap.size() < 2) {
answer = -1;
break;
}
long long nonSpicy = minHeap.top();
minHeap.pop();
long long nonSpicy2 = minHeap.top();
minHeap.pop();
long long newSpicy = nonSpicy + (2 * nonSpicy2);
minHeap.push(newSpicy);
answer++;
}
return answer;
}
'ALGORITHM > OTHER' 카테고리의 다른 글
[c++] 전화번호 목록 (프로그래머스-Trie, 정렬, 해시) (0) | 2021.07.17 |
---|---|
[c++] 숫자 문자열과 영단어 (프로그래머스, 구현) (0) | 2021.07.12 |
[c++] 실패율 (프로그래머스 - 구현) (0) | 2021.06.22 |
[c++] 신규 아이디 추천 (프로그래머스-구현) (0) | 2021.06.21 |
[c++] 모의고사 (완전탐색) (0) | 2021.05.17 |