250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)더 맵게 본문
728x90
반응형
처음 문제를 풀었을 때는 벡터를 이용해서 문제를 풀었다..!
하지만 효율성 테스트에서 시간 초과로 통과하지 못했다..
그래서 priority_queue를 이용하여 문제를 풀었다.
priority_queue는 우선순위 큐로 greater, less 함수를 이용하여 오름차순, 내림차순으로 정렬을 할 수 있다..!
시간 복잡도는 O(logn)이기 때문에 벡터를 이용해 sort 하는 것보다 빠르다..!
코드는 어렵지 않으니 천천히 보면 따라갈 수 있다..!
#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>> pq;
for(int i = 0; i < scoville.size(); i++)
pq.push(scoville[i]);
while(pq.top() < K)
{
if(pq.size() == 1)
return -1;
int sum = 0;
sum += pq.top();
pq.pop();
sum += pq.top() * 2;
pq.pop();
pq.push(sum);
answer++;
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)전화번호 목록 (0) | 2020.05.14 |
---|---|
(프로그래머스 c++)H-Index (0) | 2020.05.14 |
(프로그래머스 c++)소수 찾기 (0) | 2020.05.13 |
(프로그래머스 c++)조이스틱 (0) | 2020.05.13 |
(프로그래머스 c++)큰 수 만들기 (0) | 2020.05.11 |