programmers.co.kr/learn/courses/30/lessons/42626
코딩테스트 연습 - 더 맵게
매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같
programmers.co.kr
풀이
1. 우선순위 큐를 쓰면 굉장히 쉽게 쓰지만 이게 안떠올랐다면 굉장히 고생한다
2. 기본 while문이지만 조건이 조금 특이함
-> 두개를 뽑아서 써야되므로 size가 2 이상일때만!
-> 젤 작은거도 K를 넘는다면 스톱
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
priority_queue<int, vector<int>, greater<int> > q;
for(int i=0;i<scoville.size();i++)
q.push(scoville[i]);
while(q.size()>1 && q.top()<K)// 젤 작은 것도 K를 넘거나, 다섞고 한개만 남았을때
{
int data_1 = q.top();
q.pop();
int data_2 = q.top();
q.pop();
int new_food = data_1 + data_2*2;
answer++;
q.push(new_food);
}
if(q.top()<K)
answer =-1;
return answer;
}
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 섬 연결하기 C++ (0) | 2020.10.30 |
---|---|
프로그래머스 : 디스크 컨트롤러 c++ (0) | 2020.10.29 |
프로그래머스 : 프린터 c++ (0) | 2020.10.27 |
프로그래머스 : 다리를 지나는 트럭 C++ (0) | 2020.10.27 |
프로그래머스 : 기능개발 c++ (0) | 2020.10.27 |