Algorithm
[BOJ] 1158 요세푸스 문제
일등하이
2023. 1. 17. 22:32
반응형
https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
472ms
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace _1406
{
class Program
{
static void Main()
{
int[] input = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
int n = input[0];
int k = input[1];
Queue<int> q = new Queue<int>();
for(int i =1; i<= n; i++) q.Enqueue(i);
Console.Write("<");
while (q.Count > 1)
{
for (int i = 1; i < k; i++)
{
int temp = q.Dequeue();
q.Enqueue(temp);
}
Console.Write("{0}, ", q.Dequeue());
}
Console.WriteLine("{0}>", q.Dequeue());
}
}
}
372ms
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace _1158
{
class Program
{
static void Main()
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
int[] input = Array.ConvertAll(sr.ReadLine().Split(' '), int.Parse);
int n = input[0];
int k = input[1];
Queue<int> q = new Queue<int>();
for(int i =1; i<= n; i++) q.Enqueue(i);
// sw.Write("<");
sb.Append("<");
while (q.Count > 1)
{
for (int i = 1; i < k; i++)
{
int temp = q.Dequeue();
q.Enqueue(temp);
}
//sw.Write("{0}, ", q.Dequeue());
sb.Append(string.Format("{0}, ", q.Dequeue()));
}
// sw.WriteLine("{0}>", q.Dequeue());
sb.Append(string.Format("{0}>", q.Dequeue()));
sw.WriteLine(sb.ToString());
sr.Close();
sw.Flush();
sw.Close();
}
}
}
반응형