C++:: 프로그래머스 <디펜스 게임>

jahlee·2023년 3월 25일
0

프로그래머스_Lv.2

목록 보기
17/106
post-thumbnail

우선순위큐라는 자료구조를 알고있다면 상당히 쉽게 풀수있는 문제이다. 본인은 이를 몰라서 고생을 하다가 이번기회에 공부하게되었다.
간단히 설명하면 우선순위큐는 우선순위가 높은 데이터가 먼저나가는 자료구조로 힙을 기반으로 구현되어져 있다.

#include <queue>
using namespace std;

int main()
{
	priority_queue<int> pq;
    // 내림차순에 따라 정렬하는 우선순위 큐 선언, top에 가장 큰값이 놓이게 됨
	priority_queue<int, vector<int>, greater<int>> pq;
    //컨테이너에 따른 비교함수를 사용하여 정렬 
}
#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(int n, int k, vector<int> enemy)
{
    int sum = 0;
    priority_queue<int, vector<int>, greater<int>> pq;//작으면 top으로 오게됨
    for (int i = 0; i < enemy.size(); i++)
    {
        pq.push(enemy[i]);
        if (pq.size() > k)// 무적권보다 개수보다 크게 쌓이게되면
        {
            sum += pq.top();// 가장 작은값 ++
            pq.pop();// 빼준다.
        }
        if (sum > n) return i;// 종료조건
    }
    return enemy.size();// 모든라운드 통과
}

0개의 댓글