문 제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입 력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

5
5
4
3
2
1

출 력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

1
2
3
4
5

코 드

N이 100만이라 ‘시간 초과’ 안나게 하는 문제.

StringBuilder 를 사용하여 문자열 변경이 잦은 부분 보완.

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

namespace Algorithm
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(ReadLine());
            StringBuilder builder = new StringBuilder();

            int[] arrayNum = new int[N];

            for (int i = 0; i < N; i++)
                arrayNum[i] = int.Parse(ReadLine());

            Array.Sort(arrayNum);

            for (int i = 0; i < N; i++)
                builder.Append(arrayNum[i] + "\n");

            WriteLine(builder);
        }
    }
}

비교코드 - 1


공 부

StringBuilder

  • System.Text 네임스페이스 객체
  • 선언 방법
// 용량 10으로 설정
StringBuildr stringBuilder = new StringBuilder(10);

// 용량 10, 최대 용량 50
StringBuildr stringBuilder = new StringBuilder(10, 50);

// 문자열을 "Test"로 초기화, 최대 용량 50
StringBuildr stringBuilder = new StringBuilder("Test", 50);
  • 메서드 : Append(), Insert(), Remove(), Replace()
  • 사용처 : 추가되는 문자열 개수가 ‘동적’인 경우! / 문자열에 대해 변경이 잦을 경우