프로그래밍 문제
[백준][C#] 15552번, 빠른 A+B
sorry0101
2023. 10. 12. 17:33
문제
https://www.acmicpc.net/problem/15552
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
반례
x
풀이
더보기
using System;
using System.IO;
using System.Text;
namespace CodingTest
{
class Program
{
static void Main()
{
StringBuilder builder = new StringBuilder();
string[] values;
int T = int.Parse(Console.ReadLine());
for (int i = 0; i < T; i++)
{
using (StringReader sr = new StringReader(Console.ReadLine()))
{
values = sr.ReadLine().Split(" ");
int a = int.Parse(values[0]);
int b = int.Parse(values[1]);
builder.Append((a + b) + "\n");
}
}
Console.WriteLine(builder);
}
}
}
더보기
using System;
using System.Text;
namespace CodingTest
{
class Program
{
static void Main()
{
StringBuilder builder = new StringBuilder();
string[] values;
int T = int.Parse(Console.ReadLine());
for (int i = 0; i < T; i++)
{
values = Console.ReadLine().Split(" ");
int a = int.Parse(values[0]);
int b = int.Parse(values[1]);
builder.Append($"{a+b}\n");
}
Console.WriteLine(builder);
}
}
}
Comment
기존에 하던대로 for문에서 입력을 받아서 바로 출력하는 방식으로 돌려봤는데 바로 시간 초과 ㅋㅋ
더보기
using System;
namespace AlgorithmTest
{
class cSharpPractice
{
static void Main()
{
int T = int.Parse(Console.ReadLine());
string[] cases;
for (int i = 0; i < T; i++)
{
cases = Console.ReadLine().Split(" ");
int a = int.Parse(cases[0]);
int b = int.Parse(cases[1]);
Console.WriteLine(a + b);
}
}
}
}
정확히 찾아보니 Console.Write() 는 사용할때마다 flush() 연산을 해서 무겁다고 한다.
flush() 가 뭔지 찾아보니 버퍼에 있는 것을 모두 출력하는 것이라고 한다.
(명확하게 무엇인지 파악되지 않아서 추후 더 조사해봐야하지 않을까...)
그래서 위의 코드는 시간초과라는 결과가 나온 것으로 보여진다.
stringbuilder 을 통해 값을 저장한 후 한번에 출력하는 방향으로 해야겠다.