프로그래머스/2레벨
[프로그래머스/ C++] 디펜스 게임
Koalitsiya
2024. 3. 10. 20:59
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
우선순위 큐를 이용하면 간단하게 풀 수 있는 문제
#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>> prio_q;
for(int i = 0; i < enemy.size(); i++) {
prio_q.push(enemy[i]);
// 무적권보다 라운드 수가 많아지면
if(prio_q.size() > k) {
// 적이 가장 작은 라운드의 적 수를 더함
sum += prio_q.top();
// 이후 제거
prio_q.pop();
}
// 적의 수가 병사보다 많으면 막아낸 라운드 수 리턴
if(sum > n) return i;
}
return enemy.size();
}