15552번: 빠른 A+B (acmicpc.net)

 

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());
        }
    }
}

 

'백준 > Bronze' 카테고리의 다른 글

[Bronze5][1271]엄청난 부자2  (0) 2022.08.29
[Bronze5][2744]대소문자 바꾸기  (0) 2022.08.29
[Bronze5][2420]사파리월드  (0) 2022.08.29
[Bronze5][11382]꼬마 정민  (0) 2022.08.29
[Bronze5][25083]새싹  (1) 2022.08.29

+ Recent posts