모름

https://www.acmicpc.net/problem/10871

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

코드 212ms

using System;
using System.Text;
using System.IO;
class Program {
    static void Main()
    {
        //입력 첫째 줄 : 정수 N과 X가 주어진다.
        string[] nAndX = Console.ReadLine().Split(' ');
        int N = int.Parse(nAndX[0]);
        int X = int.Parse(nAndX[1]);

        //입력 둘째 줄 : 수열 A를 이루는 정수 N개가 주어진다. 
        StringBuilder NumberInput = new StringBuilder(Console.ReadLine());
        string[] string_Numbers = NumberInput.ToString().Split(' ');


        //출력 첫째 줄 : X보다 작은 수를 입력받은 순서대로 공백으로 구분하여 출력한다.
        // - 모든 수를 나열하여 int 배열에 집어넣는다.
        StringBuilder Output = new StringBuilder();
        int[] numbers = new int[N];
        for (int i = 0; i<N; i++)
        {
            numbers[i] = int.Parse(string_Numbers[i]);

            // - 조건문을 통해 X보다 작은 수를 걸러낸다.
            if (numbers[i] < X)
            {
                Output.Append(numbers[i]).Append(" ");
            }
        }

        //출력한다.
        Console.WriteLine(Output.ToString());
        Console.ReadLine();
    }
}

주석에 설명을 달아놨다. 궁금하다. C#맞은사람 1위를 보니 속도가 124ms다. 위 코드는 212ms다. 어떻게 하면 더 빠르게 할 수 있을까.

 

아마도 이 부분

//입력 둘째 줄 : 수열 A를 이루는 정수 N개가 주어진다. 
StringBuilder NumberInput = new StringBuilder(Console.ReadLine());
string[] string_Numbers = NumberInput.ToString().Split(' ');

스트링 변수를 공백을 기준으로 잘라서 배열로 넣는 과정이 꽤 시간을 잡아먹는 것 같은데 대체할수 있는 코드는 무엇일까?

 

 

실행화면