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

+ Recent posts