본문 바로가기
개발공부/백준풀이

백준 1966 C++

by park_hama 2024. 11. 30.

https://www.acmicpc.net/problem/1966

 

우선순위 큐가 있는지 모르고 vector로 sort돌려서 우선순위를 따로 체크했는데

그냥 우선순위 큐를 쓰면 더 편하게 풀 수 있을 것 같다.

 

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>

using namespace std;

struct MyStruct
{
	int num;
	int prior;
};

void solve(int n, int w) {

	queue<MyStruct>q;
	vector<int>v;
	int num = 1;
	int vnum = 0;
	for (int i = 0; i < n; i++) {
		int temp;
		cin >> temp;
		q.push({i, temp});
		v.push_back(temp);
	}

	sort(v.rbegin(), v.rend());

	while (!q.empty()) {
		 
		if (q.front().prior >= v[vnum]) {
			if (q.front().num == w) {
				cout << num << '\n';
				return;
			}
			q.pop();
			vnum++;
			num++;
		}
		else {
			q.push(q.front());
			q.pop();
		}
	
	}

	cout << "error" << '\n';
}

int main() {
	
	int n;

	cin >> n;

	for (int i = 0; i < n; i++) {
		int ndocument, wdocument;
		cin >> ndocument >> wdocument;

		solve(ndocument, wdocument);
	
	}

	
	return 0;
}

 

'개발공부 > 백준풀이' 카테고리의 다른 글

백준 1764 c++  (1) 2024.12.03
백준 2606 그래프문제 C++  (0) 2024.12.01
1026 C++ 그리디  (0) 2024.11.26
11723 백준 c++  (0) 2024.11.20
백준 1991 C++ 트리순회 문제(전위,중위,후방)순회  (0) 2024.11.13