코딩테스트 연습 - K번째수
접근 방법
단순히 sub vector를 추출하여 정렬한 뒤 인덱스를 넣어 해결할 수도 있지만, 우선순위 큐를 활용하는 방법으로 풀어보았습니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (auto v : commands) {
int i = v[0];
int j = v[1];
int k = v[2];
vector<int> sub(array.begin()+i-1, array.begin()+j);
priority_queue<int> pq;
for (auto n : sub) {
if (pq.size() < k) {
pq.push(n);
continue;
}
if (pq.top() > n) {
pq.pop();
pq.push(n);
}
}
answer.push_back(pq.top());
}
return answer;
}
|