728x90
반응형
https://www.acmicpc.net/problem/1966
#include <iostream>
#include <queue>
using namespace std;
int main() {
int c, n, m, num, tmp, cnt;
cin >> c;
for (int i = 0; i < c; i++) {
cnt = 0;
queue<pair<int, int>> q;
priority_queue<int> pq;
cin >> n >> m;
for (int j = 0; j < n; j++) {
cin >> num;
q.push(pair<int, int>(j, num));
pq.push(num);
}
while (!q.empty()) {
int idx = q.front().first;
int val = q.front().second;
q.pop();
if (pq.top() == val) {
pq.pop();
++cnt;
if (idx == m) {
cout << cnt << endl;
break;
}
}
else q.push(pair<int, int>(idx, val));
}
}
return 0;
}
중요도가 나온 이 문제는 우선순위 큐 STL priority_queue를 사용해서 풀었다.
큐에는 인덱스와 그 인덱스에 해당하는 중요도 값을 쌍으로 넣고, 우선순위 큐에는 중요도를 넣게 되면 자동으로 크기가 큰 순으로 정렬된다. 큐가 빌 때까지 현재 중요도와 우선순위 큐에 있는 중요도를 확인하고 현재 인덱스와 찾을 인덱스 값이 일치할때까지 갯수를 증가시키며 반복한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 21736번 헌내기는 친구가 필요해 (C++) (0) | 2021.11.05 |
---|---|
[BOJ] 12865번 평범한 배낭 (C++) (0) | 2021.11.05 |
[BOJ] 4963번 섬의 개수 (C++) (0) | 2021.11.03 |
[BOJ] 1012번 유기농 배추 (C++) (0) | 2021.11.02 |
[BOJ] 10867번 중복 빼고 정렬하기 (C++) (0) | 2021.11.02 |