기타/백준
백준 C# 1655 가운데를 말해요
Krapboss
2024. 7. 31. 20:18
문제
0.1 초 내에 주어진 수를 정렬해서 중앙값을 출력하는 것
해결
이분 정렬을 통해 시간을 맞춤
입출력 시간을 줄이기 위해
StreamReader과 StreamBuilder를 사용
internal class E1655__가운데를말해요
{
static void Main(string[] args)
{
int N(StreamReader r) => int.Parse(r.ReadLine());
using (StreamReader reader = new StreamReader(Console.OpenStandardInput()))
{
int iter = N(reader);
List<int> list = new List<int>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < iter; i++)
{
int n = N(reader);
int left = 0;
int right = list.Count;
//이분 정렬
while(left < right)
{
int mid = (left + right) / 2;
if (n>list[mid])
{
left =mid+1;
}
else
{
right = mid;
}
}
list.Insert(left, n);
sb.Append(list[(list.Count - 1) / 2]);
sb.AppendLine();
}
using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
sw.WriteLine(sb);
}
}
}