https://school.programmers.co.kr/learn/courses/30/lessons/138477
우선순위 큐 priority queue를 사용하였다. 내림차순으로 정렬하도록 설정한 뒤 score의 원소들을 추가해가면서 자동으로 정렬되므로 top()이 가장 낮은 점수이다.
k + 1 일차 부터 pop()으로 가장 낮은 점수를 뺀다.
#include <string>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
vector<int> solution(int k, vector<int> score) {
vector<int> answer;
priority_queue<int, vector<int>, greater<int>> q;
for(int i = 0; i < score.size(); i++)
{
q.push(score[i]);
if(i + 1 > k)
q.pop();
answer.push_back(q.top());
}
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int k, vector<int> score) {
vector<int> answer, tmp;
for(auto s : score){
tmp.push_back(s);
sort(tmp.begin(), tmp.end(), greater<int>());
if(tmp.size() >= k) tmp.erase(tmp.begin() + k, tmp.end());
answer.push_back(tmp.back());
}
return answer;
}
score을 넣을 때 마다 sort를 하였다.