[BAEKJOON] 백준 8949: 대충 더해 (C#)

2024. 8. 27. 22:16IT/BaekJoon

문제 링크

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

 

 

문제

강민이는 동생 희주를 위해 수학 문제를 만들고 있다. 희주는 매일 연습하고 열심히 공부했지만, 아직도 더하기를 끝내지 못했다.

숫자를 더할 때, 오른쪽부터 왼쪽으로 가면서 숫자를 하나씩 더한다. 그런데 희주는 귀찮아서 "받아 올림"을 하지 않고 그냥 두 숫자의 합을 적어버린다.

예를 들면, 희주는 숫자 123과 2495를 아래와 같이 더한다.

       1  2  3 
 +  2  4  9  5 
----------------
    2  5 11  8

그래서 답을 적을 때 25118을 적는 것이었다.

만약 모든 숫자를 다 이렇게 더한다면 결과가 어떻게 나오는 지 프로그램으로 작성하시오.

 

 

입력

두 정수 A, B가 공백을 두고 주어진다. A와 B는 1과 1,000,000 사이의 정수이다.

 

 

출력

희주 방식대로 더한 결과를 출력한다.

 

 

 

통과한 답안

namespace _8949
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            string A = inputs[0];
            string B = inputs[1];
            int lenA = A.Length;
            int lenB = B.Length;

            if (lenA > lenB)
            {
                B = B.PadLeft(lenA, '0');
            }
            else
            {
                A = A.PadLeft(lenB, '0');
            }

            string answer = "";
            for (int i = 0; i < Math.Max(lenA, lenB); i++)
            {
                answer += A[i] - '0' + B[i] -'0';
            }

            Console.WriteLine(answer);
        }
    }
}

 

두 수 A, B가 주어진다. 이 A, B를 원래의 덧셈이 아닌,

각 자릿수 별로 더한 뒤에 올림처리하지 않고

구해진 값을 그대로 적는 방법을 구하는 문제이다.

 

두 수 A와 B를 string 타입으로 받은 뒤에, 각각의 숫자의 길이를 저장한다.

그 뒤에 짧은 숫자를 긴 숫자와 같은 길이로 맞추기 위해 왼쪽에 0을 추가한다(Pad).

 

이후에 앞에서부터 끝까지 각 숫자들을 더하면서 해당 값을 string 타입으로 저장하여

올림처리하지 않고 더해진 결과를 그대로 저장하도록 구현하였다.