백준/Bronze
[Bronze4][15552]빠른 A + B
심플코딩
2022. 8. 29. 11:56
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
문자열이 긴 경우에 어떻게 하면 효율적으로 출력할 수 있는지 알아보는 문제다.
Console 출력은 생각보다 많은 리소스를 잡아먹는 과정이다. 따라서 이번 문제처럼 많은 라인을 출력하는 경우 한줄마다 Console 출력을 요청하면 많은 시간이 걸리게 된다.
따라서 메모리에 출력 할 값을 차곡차곡 모았다가 한번에 Console 출력을 하여야 시간초과에서 벗어날 수 있다.
문자열을 합치기 위해서는 (=누적) StringBuilder 클래스를 활용하면 된다.
문자열을 그대로 이어붙이면 (StringBuilder에 비해)빈번한 메모리의 할당이 이루어지기 때문에 그만큼 퍼포먼스가 안좋게 된다. 보다 기술적인 자세한 설명은 다른분들이 설명해놓은 게시글을 참조하자.
코드
using System;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int testCase = int.Parse(Console.ReadLine());
StringBuilder sb = new StringBuilder();
while(testCase-- > 0)
{
string[] tokens = Console.ReadLine().Split();
int a = int.Parse(tokens[0]);
int b = int.Parse(tokens[1]);
sb.AppendLine((a + b).ToString());
}
Console.WriteLine(sb.ToString());
}
}
}