Language/C#

[C#] 백준 10867번 중복 빼고 정렬하기

석영 2024. 4. 28. 10:23
반응형

[ 문제 ]

N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다.

 

[ 코드 ]

1. 내 코드

StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

int n = int.Parse(sr.ReadLine());
int[] input = sr.ReadLine().Split().Select(int.Parse).ToArray();
input = input.OrderBy(x => x).Distinct().ToArray();

foreach (int i in input)
{
    sw.Write($"{i} ");
}

sw.Flush();
sw.Close();
sr.Close();

 

2. 다른 사람 코드

using System.Text;
using System;
using System.IO;
using static System.Console;

namespace SortingWithoutRedundancy
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(OpenStandardInput());

            int[] array = new int[2001];

            sr.ReadLine();
            int[] data =  Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
            sr.Close();

            int sInd = 2001, bInd = -1;

            for(int i = 0; i < data.Length; i++)
            {
                int index = data[i] + 1000;
                if (index > bInd) bInd = index;
                if (index < sInd) sInd = index;

                if(array[index] == 0) array[index] = 1;
            }

            StringBuilder sb = new StringBuilder();

            for (int i = sInd; i <= bInd; i++)
            {
                if (array[i] == 1)
                {
                    sb.Append(i - 1000);
                    if(i != bInd) sb.Append(" ");
                }
            }
            WriteLine(sb);
        }
    }
}

 

내가 블로그 초창기부터 주구장창 사용한 LINQ 쿼리는 처리해야할 데이터 양이 많아질수록 느려지기 때문에 가공 후 사용을 하거나 대용량 데이터가 아닌 경우에는 간단해서 사용하기 편리하다.

 

[ 실행화면 ]

case: 1

 

 

 

 

 


문제링크: https://www.acmicpc.net/problem/10867

 

반응형