SMALL
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
- 문제
- 문제풀이
Queue를 두개를 생성해주고 하나는 입력을 받아주고 하나는 입력을 정렬한뒤 넣어준다. 자연스럽게 두번째 큐에는 최댓값부터 순서대로 큐가 생성이 된다. 즉 중요도의 순서대로 큐가 들어가기 때문에 첫번째와 두번째 큐의 수를 비교해가면서 같으면 순서를 출력해주는 방식을 사용한다.
- 코드 1
using System.Collections.Immutable;
using System.Text;
using System.Collections.Generic;
using System;
using System.Collections;
namespace YongYong2
{
internal class Program
{
static void Main(string[] args)
{
int N=int.Parse(Console.ReadLine());
StringBuilder sb = new StringBuilder();
int count;
for(int i=0; i < N;i++)
{
string[] arr = Console.ReadLine().Split();
int M = int.Parse(arr[0]);
int num = int.Parse(arr[1]);
int[] arr_input = (Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse));
Queue<int> queue = new Queue<int>(arr_input);
Array.Sort(arr_input);
Array.Reverse(arr_input);
Queue<int> queue_max = new Queue<int>(arr_input);
count = 1;
while (true)
{
if (queue.Peek() == queue_max.Peek())
{
if (num == 0)
{
sb.Append(count+"\n");
break;
}
queue.Dequeue();
queue_max.Dequeue();
count++;
num--;
}
else
{
queue.Enqueue(queue.Dequeue());
if (num == 0)
{
num = queue.Count()-1;
}
else
{
num--;
}
}
}
}
Console.WriteLine(sb);
}
}
}
- 후기
큐를 두개를 비교해서 카드돌리기 처럼 Enqueue와 Dequeue를 사용하였다.
LIST
'백준 > C#' 카테고리의 다른 글
[C#]백준 17413번: 단어 뒤집기 2 (0) | 2023.01.28 |
---|---|
[C#]백준 15828번: Router (2) | 2023.01.28 |
[C#]백준 11866번: 요세푸스 문제 0 (0) | 2023.01.28 |
[C#]백준 2164번: 카드2 (0) | 2023.01.28 |
[C#]백준 9012번: 괄호 (0) | 2023.01.14 |