
static void Main(string[] args)
{
// 테스트 케이스 T
int T = int.Parse(Console.ReadLine());
int[] a = new int[T];
int[] b = new int[T];
// 다음 T줄에 각각 정수 A, B
for (int i = 0; i< T; i ++)
{
string[] ab = Console.ReadLine().Split(" ");
a[i] = int.Parse(ab[0]);
b[i] = int.Parse(ab[1]);
}
// A+B 출력
for (int i = 0; i < T; i++)
{
Console.WriteLine(a[i] + b[i]);
}
시간 초과 이유
String은 참조형이라 작업 수행 시 새로운 공간에 새로운 String 데이터가 생성되어 성능을 잡아먹기에, 문제에서 요구하는 시간 내에 출력되지 않았음.
StringBuilder
- 문자열을 수정할 때 새로운 문자열 객체를 생성하지 않기 때문에, 문자열 조작 작업이 많을 때 훨씬 더 효율적
- 그래서 위와 같은 상황에서 메모리 사용을 줄이고 성능을 향상시키는 데 좋음.
using System;
using System.Text; // StringBuilder를 사용하기 위해 필요
class Program
{
static void Main(string[] args)
{
// 테스트 케이스 T
int T = int.Parse(Console.ReadLine());
// StringBuilder 인스턴스 생성
StringBuilder sb = new StringBuilder();
for (int i = 0; i < T; i++)
{
string[] ab = Console.ReadLine().Split();
int a = int.Parse(ab[0]);
int b = int.Parse(ab[1]);
// 결과를 StringBuilder에 추가
sb.AppendLine((a + b).ToString());
}
// 최종 결과 출력
Console.Write(sb.ToString());
}
}
StringBuilder의 인스턴스를 생성 : 테스트 케이스 T의 결과들을 담을 것.
각 테스트 케이스에 대해 입력을 받고, 계산된 결과를 StringBuilder에 추가.
AppendLine 메소드를 사용하여 각 결과 뒤에 새 줄을 추가.
모든 테스트 케이스T에 대한 계산이 완료되면, StringBuilder 에 ToString 메소드를 호출하여 저장된 모든 문자열을 한 번에 출력.
Append와 AppendLine
C#의
StringBuilder클래스에서 문자열을 구성하기 위해 사용되는 메서드.
Append 메서드는 StringBuilder 인스턴스의 끝에 특정 문자열을 추가한다.
문자열, 숫자, 문자 등 다양한 형태의 데이터 추가 가능.
예시)
StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(" World");
// sb의 내용: "Hello World"