
문제는 음... I/O 속도 때문에 입출력의 줄이 많아지면 특정메소드들의 효율이 떨어진다 라는것을 강조하고 있다.
일단은 C#내용이 문제자체에 없기때문에 무시하고 평소 풀던방식으로 풀어보았다.
int n = int.Parse(Console.ReadLine());
for (int i = n; i-- > 0 ;){
int[] x = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Console.WriteLine(x[0] + x[1]);
}

다른 코드연습 사이트에서는 예제 입력에 대한 출력이 정상적으로 나왔지만, 백준에서 제출한 결과는 시간초과였다.

문제에 포함된 링크를 따라 들어가서 C#의 내용을 확인했다.



StreamReader는 대부분의 예시가 파일을 읽는쪽으로 작성되어, 메소드의 ()안에 path(경로)를 지정하는 방법으로 나와있어 조금 헤메었으나, Console.OpenStandardInput()으로 콘솔값을 읽는 방법을 알 수 있었다.
StringBuilder는 더 알아야할 내용이 많았다. StringBuilder클래스로 생성하면 버퍼를 사용하는 저장공간이 생기고, 여기서 StringBuilder의 내장메소드 Append나 AppendLine을 통해 값을 저장해 놓는다.
이후 Console.Write를 통해 정리된 내용물을 한번에 출력하는 방식이었다.
using System.Text;
StreamReader sr = new StreamReader(Console.OpenStandardInput());
int n = int.Parse(sr.ReadLine());
StringBuilder sb = new StringBuilder();
for (int i = n; i-- > 0 ;){
int[] x = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
sb.AppendLine((x[0] + x[1]).ToString());
}
Console.Write(sb);

StreamReader는 System.IO에서 가져오기 때문에 백준에서 기본적으로 바로 써도 읽어올 수 있었지만, StringBuilder의 경우 System.Text에서 가져오는데 이 경우는 백준에서 바로 쓰면 읽어올 수 없어서 컴파일에러가 발생하기 때문에 StringBuilder를 사용하고 싶다면 꼭 using System.Text를 작성해 주어야 한다.
int t=int.Parse(Console.ReadLine());
System.Text.StringBuilder sb=new();
for (int i = 0; i < t; i++)
sb.Append($"{Array.ConvertAll(Console.ReadLine().Split(' '),int.Parse).Sum()}\n");
Console.Write(sb.ToString());

이 사람으 풀이경우 읽는것은 그냥 그대로 Console.ReadLind()으로 읽었고, 출력의 경우에만 스트링빌더를 사용했다. 문제에 포함된 링크의 내용을 그대로 모두 사용하지 않아도 문제가 시간초과 없이 통과한다는게.. 모르고 볼 일이다.
위의 코드 말고도 정말 궁금증을 갖게되는 1등 숏코드가 존재는 하는데... 정답자가 비공개로 작성해서 알아볼 수 없다는게 너무 아쉬웠다.

4등과 1등의 메모리 사용량의 차이나, 속도의 차이가 어마어마한데, 여기서 코드길이도 더 적다는게 신기할 따름이다.