https://www.acmicpc.net/problem/10871
코드 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(' ');
스트링 변수를 공백을 기준으로 잘라서 배열로 넣는 과정이 꽤 시간을 잡아먹는 것 같은데 대체할수 있는 코드는 무엇일까?
실행화면