-
https://www.acmicpc.net/problem/1966
백준 온라인저지 1966번 프린터 큐 문제입니다.
아이디어
프로그래머스에 있는 프린터 문제랑 비슷한 문제입니다.
우선큐로 작업의 순위를 담고 작업을 큐에 담에서 우선순위를 가지는 작업이 아니면 큐의 뒤로 보내고 찾는 작업이 완료되었을때 로직이 마무리 되도록 처리했습니다.
#include<iostream> #include<queue> using namespace std; int t; int main(void) { cin >> t; while (t--) { int n, m; int cnt = 0; cin >> n >> m; //프린트 큐에서 우선순위를 차례대로 정렬하는 우선 큐 priority_queue<int> pq; //작업의 우선순위와 작업의 순서를 담을 큐 queue<pair<int, int>> q; for (int i = 0; i < n; i++) { int k; cin >> k; pq.push(k); q.push({ k,i }); } while (true) { int priority = q.front().first; int pos = q.front().second; q.pop(); //현재 최우선 순위와 현재 작업의 순위가 맞는지 확인 if (priority != pq.top()) { q.push({ priority,pos }); continue; } //최우선 순위의 작업이 수행되었음 pq.pop(); cnt++; //찾는 작업이 완료되었을때 if (pos == m) { cout << cnt << "\n"; break; } } } }
'알고리즘 > 백준' 카테고리의 다른 글
BOJ 7579 앱 / C++ (0) 2022.07.27 BOJ 2933 미네랄 / C++ (0) 2022.07.26 BOJ 3190 뱀 / C++ (0) 2022.07.26 BOJ 14499 주사위 굴리기 / C++ (0) 2022.07.26 BOJ 13460 구슬 탈출 2 / C++ (0) 2022.07.26 댓글