주소 : https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
typedef struct
{
public:
int num;
int check;
}v;
int main()
{
int N, M, num;
int result;
int point;
cin >> num;
while (num != 0)
{
queue<v> q;
vector<int> v;
vector<int> order;
cin >> N >> M;
for (int i = 0;i < N;i++)
{
int element;
cin >> element;
v.push_back(element);
if (i == M)
{
q.push({ element,1 });
point = M;
}
else q.push({ element,0 });
}
sort(v.begin(), v.end(),compare);
int a=0;
for (int i = 0;i < v.size();i++)
{
for (int j = 0;j < q.size();j++)
{
int temp;
temp = q.front().num;
if (temp == v[i])
{
if (q.front().check == 1)
{
order.push_back(temp);
a = 1;
break;
}
order.push_back(temp);
q.pop();
point--;
break;
}
else
{
int che = q.front().check;
q.pop();
q.push({temp,che});
if (point == 0)
point = q.size() - 1;
else point--;
}
}
if (q.front().check == 1 && a==1)
{
result = order.size();
break;
}
}
cout << result << '\n';
num--;
}
}
마무리 : 입력된 값을 큐에, 내림차순으로 정렬한 값과 순서에 맞게 배치된 값들을 저장할 벡터로 만들어 큐의 값이 정렬된 값과 같다면 순서를 저장할 벡터에 값을 저장하고 문제를 풀게 만들었다.
'백준 > C++' 카테고리의 다른 글
백준 1654번 : 랜선 자르기 [C++] (0) | 2022.08.22 |
---|---|
백준 2108번 : 통계학 [C++] (0) | 2022.08.22 |
백준 1929번 : 소수 구하기 [C++] (0) | 2022.08.18 |
백준 10866번 : 덱 [C++] (0) | 2022.08.18 |
백준 9012번 : 괄호 [C++] (0) | 2022.08.15 |