집게사장의 꿈

백준 C# 10989 수 정렬하기 3 본문

기타/백준

백준 C# 10989 수 정렬하기 3

Krapboss 2024. 7. 19. 22:09
문제

 

입력된 1~10000까지의 제한된 숫자를 정렬하는 것

 

해결

 

입력되는 수가 10000까지라는 것이 힌트.

10000개의 배열을 통해 입력된 수를 세아리는 것

internal class _10989 // 수 정렬하기 3
{
    static void Main(string[] args)
    {
        //3. 1만개의 숫자를 세아리기
        int iter = int.Parse(ReadLine());
        int[] nums = new int[10000];
        for(int i = 0; i < iter; i++)
        {
            nums[int.Parse(ReadLine())-1]++;
        }

        using (StreamWriter writer = new StreamWriter(Console.OpenStandardOutput()))
        {
            for (int i = 0; i < nums.Length; i++)
            {
                for (int j = 0; j < nums[i]; j++)
                {
                    writer.WriteLine(i + 1);
                }
            }
        }

        /* 1. 자체 솔트 정렬
        int iter = int.Parse(ReadLine());
        List<int> list = new List<int>();

        for(int i = 0; i < iter; i++)
        {
            list.Add(int.Parse(ReadLine()));
        }

        list.Sort();

        foreach(int i in list)
        {
            WriteLine(i);
        }
        */

        /* 2. 분할 정렬 알고리즘
        for (int i = 0; i< iter; i++)
        {
            int num = int.Parse(ReadLine());

            int left = 0;
            int right = list.Count;

            while (left < right)
            {
                int mid = (left + right) / 2;
                if (list[mid] < num)
                    left = mid + 1;
                else
                    right = mid;
            }

            list.Insert(left,num);
        }

        foreach (var item in list)
        {
            WriteLine(item);
        }
        */
    }
}