집게사장의 꿈

백준 C# 1655 가운데를 말해요 본문

기타/백준

백준 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);
        }
    }
}

 

'기타 > 백준' 카테고리의 다른 글

백준 C# 16928 뱀과 사다리 게임  (0) 2024.08.04
백준 C# 10026 적록색약  (0) 2024.08.01
백준 C# 7576 토마토 2차원  (0) 2024.07.31
백준 C# 7569 토마토 3차원  (0) 2024.07.31
백준 C# 5430 AC  (0) 2024.07.30