백준 알고리즘/Lang-C#

[백준/C# (.NET)] 10757번 큰 수 A + B

Jongung 2021. 8. 11. 17:00

 

백준 온라인 저지 / 10757 문제이름

https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

  • 사용언어 : C# (.NET)
  • 알고리즘 : 수학, 구현, 사칙연산, 임의정밀도

 

 

C#코드

1. 문제 정리

 

그냥 A+B로 풀면 되는 것이 아닌가? 라는 의문에서 시작 된 문제이다.

일반적인 정수 int값을 쓸 경우 백준에서도, 비쥬얼 스튜디오에서도 똑같이 Overflow가 된다.

 

물론 Python 같은 arbitrary precision이 가능한 언어는 오버플로우 되지않고 문제를 풀 수 있겠다만...

C나 C# 같은 언어들은 다른 방법을 통해서 문제를 풀어야 한다.

 

이번 문제에서는 C# 닷넷 4.0부터 지원하는 System.Numerics의 BigInteger을 사용해보았다.

 

2. BigInteger (큰 정수) 사용하기

 

BigInt C# 문서 보러가기

 

 

이런 식으로 마이크로소프트에서 보여주는 문서들을 참고하며 코딩 하면 매우 편하다.

먼저 위 네임스페이스를 using System 밑에 넣어주도록 하자.

 

using System;
using System.Numerics;

 

이제 정수형 변수 지정자 int 대신 BigInteger을 사용해주면 문제를 쉽게 풀 수 있다.

 


3. 코드 작성

 

using System;
using System.Numerics;

namespace boj
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            string [] spt = str.Split(' ');
            BigInteger idx1 = BigInteger.Parse(spt[0]);
            BigInteger idx2 = BigInteger.Parse(spt[1]);
            Console.WriteLine(idx1 + idx2);
        }
    }
}

 

 

꼭 using System.Numerics를 추가 해주고 값을 배열로 나누고 받아 준 뒤

 

덧셈 해 주자.

 

이 방법도 좋긴 하다만, 메모리를 매우 많이 사용한다. 덧셈이 아니고 곱셈이였으면 이미 시간 초과가 내 눈에 보였을 것이다.

 

다음 번에는 숫자를 다 분해 해서 빠르게 계산 하는 방법도 알아보자.