[C#] 백준 15552번 풀이과정

2022. 6. 1. 15:12C#/백준 알고리즘

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

 

처음엔 StreamReader나 StringBuilder를 쓰지 않고

아래의 코드로 했었다.

                int repeat = Int32.Parse(Console.ReadLine());

                for(int i = 0; i < repeat; i++)
                {
                    string c = Console.ReadLine();
                    string[] d = c.Split();
                    int[] e = new int[] { Int32.Parse(d[0]), Int32.Parse(d[1]) };

                    Console.WriteLine(e[0] + e[1]);
                }

그러나 시간 초과가 떠서 StringBuilder 를 조사해보고 적용시켰더니 됐다.

적용시킨 소스 코드

using System;
using System.Text;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            App.FastAddNums();
        }

        public class App
        {
            public static void FastAddNums()
            {
                int repeat = int.Parse(Console.ReadLine());
                StringBuilder sb = new StringBuilder();
                char[] chars = { '\n', ' ' };

                for (int i = 0; i < repeat; i++)
                {
                    sb.AppendLine(Console.ReadLine());
                }

                string[] d = sb.ToString().Split(chars);

                sb.Remove(0, sb.Length);

                for(int s = 0; s < d.Length - 1; s += 2)
                {
                    sb.AppendFormat("{0}", int.Parse(d[s]) + int.Parse(d[s + 1]));
                    sb.AppendLine();
                }
                Console.WriteLine(sb.ToString());
            }
        }
    }
}

https://rivergembig-gameprogramming.tistory.com/134

 

[C#] String Builder란?

https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/stringbuilder .NET에서 StringBuilder 클래스 사용 .NET에서 StringBuilder 클래스를 사용하는 방법을 알아봅니다. 이 클래스를 사용하면 새 개체..

rivergembig-gameprogramming.tistory.com

 

문제는 난 StreamReader는 쓰지 않았는데 해결이 되어버렸다는 것이다.

Stream Reader를 적용시킨 다른 사람들의 풀이를 알아보자.

 

https://sete3683.tistory.com/16

 

백준 15552 C#) 빠른 A+B

이 문제에서 익혀야 하는 것은 단순히 A+B를 반복하는 방법이 아니라 최대한 입출력을 빠르게 하는 방법이다. 별로 어렵지 않기 때문에 추후 입출력이 많은 문제가 나올 때마다 써먹으면 큰 도움

sete3683.tistory.com

 

 

여기선 new BufferedStream을 하지만 지금은 그냥 new streamReader(console.~)로 생성하면 된다.

표준 입출력과 Stream 입출력의 차이점?

StreamReader를 이용해 풀기

 

StringBuilder와 StreamReader 모두를 사용하여 풀기

 

그러나 시간은 StringBuilder와 StreamReader 모두 사용하여 푼 것보다

Stream 입출력만 사용하여 푼 것이 가장 빨랐다.