문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
출력
첫째 줄에 A+B를 출력한다.
풀이 코드
char에 '0'을 빼는 코드가 처음에는 이해하기 힘들었지만 여기저기 찾아보니 아스키코드 관련으로 변환하기 위한 코드였다. 관련된 내용은 아래의 글을 참고하자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static void Main(string[] args)
{
var input = Console.ReadLine().Split();
BigNumerAdd(input[0], input[1]);
}
static void BigNumerAdd(string num1, string num2)
{
Queue<int> queue = new Queue<int>();
StringBuilder sb = new StringBuilder();
var s = "";
if (num1.Length <= num2.Length)
{
for (int i = 0; i < num2.Length - num1.Length; i++)
{
s += "0";
}
num1 = s + num1;
}
else
{
for (int i = 0; i < num1.Length - num2.Length; i++)
{
s += "0";
}
num2 = s + num2;
}
for (int i = num1.Length - 1; 0 <= i; i--)
{
var digit1 = num2[i] - '0';
var digit2 = num1[i] - '0';
var prevCarry = 0;
if (queue.Count > 0)
{
prevCarry = queue.Dequeue();
}
if (10 <= digit1 + digit2 + prevCarry)
{
queue.Enqueue(1);
}
sb.Append((digit1 + digit2 + prevCarry) % 10);
}
if (queue.Count > 0)
{
sb.Append(queue.Dequeue());
}
var result = new string(sb.ToString().Reverse().ToArray());
Console.WriteLine(result);
}
}
'프로그래밍 > Algorithm' 카테고리의 다른 글
C# [백준 BAEKJOON] 15649번 N과 M (1) (0) | 2024.03.06 |
---|---|
C# [백준 BAEKJOON] 2407번 조합 (0) | 2024.03.04 |
[백준 BAEKJOON] 14928번 큰 수 (BIG) (0) | 2024.02.26 |
[백준 BAEKJOON] 6603번 로또 (2) | 2024.02.26 |
[백준 BAEKJOON] 4948번 베르트랑 공준 (0) | 2024.02.23 |
댓글