백준 온라인 저지 / 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 (큰 정수) 사용하기
이런 식으로 마이크로소프트에서 보여주는 문서들을 참고하며 코딩 하면 매우 편하다.
먼저 위 네임스페이스를 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를 추가 해주고 값을 배열로 나누고 받아 준 뒤
덧셈 해 주자.
이 방법도 좋긴 하다만, 메모리를 매우 많이 사용한다. 덧셈이 아니고 곱셈이였으면 이미 시간 초과가 내 눈에 보였을 것이다.
다음 번에는 숫자를 다 분해 해서 빠르게 계산 하는 방법도 알아보자.
'백준 알고리즘 > Lang-C#' 카테고리의 다른 글
[백준/C# (.NET)] 2480번 주사위 세개 (0) | 2021.08.13 |
---|---|
[백준/C# (.NET)] 1712번 손익분기점 (0) | 2021.08.12 |
[백준/C# (.NET)] 1181번 단어정렬 (0) | 2021.08.11 |
[백준/C# (.NET) 14928번 큰 수 (BIG)] (0) | 2021.08.11 |
[백준/C# (.NET)] 22864번 피로도 (0) | 2021.08.10 |