C# 11866번 요세푸스 문제 0

2022. 2. 15. 23:46코딩테스트 문제 풀이/[백준] 큐, 덱

728x90
반응형

문제

코드 :

using System;
using System.Collections.Generic;
namespace _3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] NK = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            int[] output = new int[7];
            Queue<int> q = new Queue<int>();            

            //초기화
            for (int i = 1; i <= NK[0]; i++)
            {
                q.Enqueue(i);
            }
            Console.Write("<");

            //큐가 모두 없어졌을때까지 반복
            while(q.Count != 0)
            {             
                //앞에 두 숫자를 2번 큐 뒤에 연결
                //그리고 앞에 두 숫자를 제거
                for (int i = 0; i < NK[1]-1; i++)
                {
                    q.Enqueue(q.Peek());
                    q.Dequeue();
                }
                //3번째가 됐을때 그 수를 제거하면서 출력
                //이 수는 큐에 다시 넣지 않음
                Console.Write(q.Dequeue());

                //아직 제거해야할 값들이 있기 때문에
                //, 출력
                if (q.Count != 0)
                    Console.Write(", ");

            }
            Console.Write(">");
        }
    }
}

풀이 :

백준2164번 카드2와 유사하다고 볼 수 있다. 

7 3  < 이렇게 입력이 들어온다면 3번째마다 출력한다는 의미이므로 첫번째와 두번째는 큐의 뒤로 보내고 3번째마다 출력하면 된다.

728x90
반응형

'코딩테스트 문제 풀이 > [백준] 큐, 덱' 카테고리의 다른 글

C# 1966번 프린터 큐  (0) 2022.02.16
C# 2164번 카드2  (0) 2022.02.15
C# 18258번 큐 2  (0) 2022.02.15